高级DBA教你达梦8数据库更新语句包含单引号双引号引起转义字符执行失败解决方法全网唯一

达梦数据库更新语句包含单引号双引号引起执行失败解决方法全网唯一

如果一个更新的UPDATE更新语句的内容包含单引号’,会引起执行错误!
错误的类型不止这一种,但是都是因为内容里面包含转义字符单引号引起

在这里插入图片描述

解决方法一:外部单引号 内部数据单引号替换为双引号

把SQL里面内容人工调整成一行

update test1 set nasen='select * FROM a WHERE NAME="NASEN"'

在这里插入图片描述

解决方法二:外部同意用单引号,内部采用REPLACE函数实现转义

把SQL里面内容人工调整成一行

SELECT REPLACE('select * from nasen where name="{var}"','"','''')

在这里插入图片描述

update test1 set createSql=REPLACE('select * from nasen where name="{aasda}"','"','''') where id=35;

这种方法就实现了遇到更新语句包含单引号导致执行失败的问题了

三、达梦8怎么实现MYSQL的ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间’

我们实际工作中会用到业务用到当数据被修改的时候同时记录当前修改的时间,在MYSQL的时候用到

gxsj` timestamp NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

达梦在达梦8怎么实现呢这里用到触发器实现

1、我们建一个测试的表

CREATE TABLE "nasen_test"
(
"ID" BIGINT NOT NULL,
"SCSJ" TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP() NOT NULL,
"STATUS" INT NOT NULL,
"GXSJ" TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP() NOT NULL,
CONSTRAINT "CONS13422015711" NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ;

2、添加触发器到"GXSJ"这个字段上

CREATE OR REPLACE TRIGGER nasen_test_trigger
BEFORE UPDATE  ON nasen_test
FOR EACH ROW
BEGIN
   :new.GXSJ=CURRENT_TIMESTAMP();
END;

3、插入测试数据,并执行一个更新语句更新某一个字段测试然后看GXSJ字段是否取当前执行语句的时间即可

update nasen_test set STATUS =2 WHERE ID=1;

四、查看当前被锁堵塞的信息

SELECT SYSDATE STATTIME,DATEDIFF(SS,S1.LAST_SEND_TIME,SYSDATE) SS,
'被阻塞的信息' WT,S1.SESS_ID WT_SESS_ID,S1.SQL_TEXT WT_SQL_TEXT,S1.STATE WT_STATE,S1.TRX_ID WT_TRX_ID,
S1.USER_NAME WT_USER_NAME,S1.CLNT_IP WT_CLNT_IP,S1.APPNAME WT_APPNAME,S1.LAST_SEND_TIME WT_LAST_SEND_TIME,
'引起阻塞的信息' FM,S2.SESS_ID FM_SESS_ID,S2.SQL_TEXT FM_SQL_TEXT,S2.STATE FM_STATE,S2.TRX_ID FM_TRX_ID,
S2.USER_NAME FM_USER_NAME,S2.CLNT_IP FM_CLNT_IP,S2.APPNAME FM_APPNAME,S2.LAST_SEND_TIME FM_LAST_SEND_TIME
FROM V$SESSIONS S1,V$SESSIONS S2,V$TRXWAIT W
WHERE S1.TRX_ID=W.ID
AND S2.TRX_ID=W.WAIT_FOR_ID;

五、查询某个表的所有会话并杀掉解锁

select DISTINCT c.SESS_ID from v$lock a
left join sysobjects b on b.ID=a.TABLE_ID
left join v$sessions c on a.TRX_ID=c.TRX_ID
where name = '表名称';
sp_close_session(35451965760);      #里面是数字就是sessionid

笔者简介
国内某一线知名软件公司企业认证在职员工:任JAVA高级研发工程师,大数据领域专家,数据库领域专家兼任高级DBA!10年软件开发经验!现任国内某大型软件公司大数据研发工程师、MySQL数据库DBA,软件架构师。直接参与设计国家级亿级别大数据项目!并维护真实企业级生产数据库300余个!紧急处理数据库生产事故上百起,挽回数据丢失所造成的灾难损失不计其数!并为某国家级大数据系统的技术方案(国家知识产权局颁布)专利权的第一专利发明人!

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术很渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值