首页 新闻 会员 周边 捐助

mysql的触发器和事物可以结合一起使用吗?

0
悬赏园豆:10 [已解决问题] 解决于 2018-01-15 20:33

就是这样一个场景:向数据库中新增一条数据,如果某个值不符合规则就触发回滚

白天很白≯的主页 白天很白≯ | 初学一级 | 园豆:101
提问于:2018-01-11 16:15
< >
分享
最佳答案
0

 事务里面不能写逻辑验证这个规则吗

收获园豆:10
顾星河 | 大侠五级 |园豆:7281 | 2018-01-11 16:16

刚刚在事物里面定义变量报错了,我是这样写的

 

白天很白≯ | 园豆:101 (初学一级) | 2018-01-11 16:21

还是不对,报错

白天很白≯ | 园豆:101 (初学一级) | 2018-01-11 16:31

@白天很白≯: http://blog.csdn.net/clevercode/article/details/52695416

最后一句,“使用select时必须用“:=赋值” ”  

赋值改成:select flag := count(*) stuinfo..... 试试

顾星河 | 园豆:7281 (大侠五级) | 2018-01-11 16:32

@白天很白≯: 嗯 不能DECLARE @msg INT 这样定义,这个是sql server的,刚刚是我搞错了,你看我后面给你发的

顾星河 | 园豆:7281 (大侠五级) | 2018-01-11 16:33

@默卿: 是的,还是那样报错了,没啥变化,好像主要是变量定义这句开始错了

白天很白≯ | 园豆:101 (初学一级) | 2018-01-11 16:35

@白天很白≯: 

DECLARE flag INT;

set @flag = 0 ;

select @flag:=count(*) stuinfo where stuAge<0 or stuAge>100;

改成这样也不行麽

顾星河 | 园豆:7281 (大侠五级) | 2018-01-11 16:43

@默卿: 是的,主要是DECLARE @msg INT;这一句报错,后面的其实都没有执行了

白天很白≯ | 园豆:101 (初学一级) | 2018-01-11 16:44

@白天很白≯: 定义的时候不要@   DECLARE @msg INT;改成  DECLARE msg INT;  赋值的时候貌似才要@

顾星河 | 园豆:7281 (大侠五级) | 2018-01-11 16:46

@默卿: 我要不要@都是报错,百度说是变量名与mysql关键字冲突,但是好像并没有冲突

白天很白≯ | 园豆:101 (初学一级) | 2018-01-11 16:49

@白天很白≯: 错误输出是什么,发我看下

顾星河 | 园豆:7281 (大侠五级) | 2018-01-11 16:51

@默卿: 

[SQL]
#定义一个用于记录错误的变量
DECLARE aa INT;
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE aa INT' at line 2

白天很白≯ | 园豆:101 (初学一级) | 2018-01-11 16:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册