这样的存储过程怎么写?急求

猫工 2009-11-12 10:33:44
A表先生成一条记录
得到A表此记录的字段S的值
用字段S的值做关键字生成B表记录
如果不生成,所有回滚

急求一个例子,谢谢。
我写事物后提示错误:
Explicit or implicit commit is not allowed in stored function or trigger
...全文
76 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2009-11-13
  • 打赏
  • 举报
回复
在TRIGGER中不能使用事务,在表中设置主键,重复则提示,在TRIGGER中
FOR EACH ROW BEGIN
INSERT INTO b(s) values(NEW.s);
END;
猫工 2009-11-12
  • 打赏
  • 举报
回复
一定一定,谢谢,我先看看
ACMAIN_CHM 2009-11-12
  • 打赏
  • 举报
回复
ACMAIN_CHM 2009-11-12
  • 打赏
  • 举报
回复
mysql> create table a (id int,s int);
Query OK, 0 rows affected (0.09 sec)

mysql> create table b (s int primary key);
Query OK, 0 rows affected (0.06 sec)

mysql>
mysql> delimiter |
mysql>
mysql> CREATE TRIGGER tr_a_bi BEFORE INSERT ON a
-> FOR EACH ROW BEGIN
-> INSERT INTO b SET s = NEW.s;
-> END;
-> |
Query OK, 0 rows affected (0.08 sec)

mysql>
mysql> delimiter ;
mysql>
mysql> insert into a values (1,1);
Query OK, 1 row affected (0.05 sec)

mysql> select * from a;
+------+------+
| id | s |
+------+------+
| 1 | 1 |
+------+------+
1 row in set (0.00 sec)

mysql> select * from b;
+---+
| s |
+---+
| 1 |
+---+
1 row in set (0.00 sec)

mysql>
mysql> insert into a values (2,1);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> select * from a; -- 记录未插入。如果不生成,所有回滚
+------+------+
| id | s |
+------+------+
| 1 | 1 |
+------+------+
1 row in set (0.00 sec)

mysql> select * from b;
+---+
| s |
+---+
| 1 |
+---+
1 row in set (0.00 sec)

mysql>

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧