建表:插记录create table tablename (id int,RQ1 datetime,RQ2 datetime)
-- select * from tablenameinsert into tablename
select 1,'2009-01-01 10:00:00','2009-01-02 11:00:00' union
select 2,'2009-01-02 10:00:00','2009-01-04 10:30:00' union
select 3,'2009-01-03 10:00:00','2009-01-06 11:30:00'
存储过程,包含出错回滚create PROCEDURE a(ia int )
begin
start TRANSACTION;
insert into tablename values(ia+1,'2009-01-01 10:00:00','2009-01-02 11:00:00');
insert into tablename values(ia+2,'2009-01-01 10:00:00','2009-01-02 11:00:00');
insert into tablename values(ia,'2009-01-01 10:00:00','2009-01-02 11:00:00');
-- ROLLBACK;
COMMIT ;
end表里面,第一个字段id 是主键,这样就不允许插入重复值。。
call(1),这样插进去2,3,1
再CALL 3, 这样插进去4,5,3.。到3的时候,判断出来主键重复,希望执行回滚操作。。这个存储过程应该怎么样修改??请高手帮忙看下。。
-- select * from tablenameinsert into tablename
select 1,'2009-01-01 10:00:00','2009-01-02 11:00:00' union
select 2,'2009-01-02 10:00:00','2009-01-04 10:30:00' union
select 3,'2009-01-03 10:00:00','2009-01-06 11:30:00'
存储过程,包含出错回滚create PROCEDURE a(ia int )
begin
start TRANSACTION;
insert into tablename values(ia+1,'2009-01-01 10:00:00','2009-01-02 11:00:00');
insert into tablename values(ia+2,'2009-01-01 10:00:00','2009-01-02 11:00:00');
insert into tablename values(ia,'2009-01-01 10:00:00','2009-01-02 11:00:00');
-- ROLLBACK;
COMMIT ;
end表里面,第一个字段id 是主键,这样就不允许插入重复值。。
call(1),这样插进去2,3,1
再CALL 3, 这样插进去4,5,3.。到3的时候,判断出来主键重复,希望执行回滚操作。。这个存储过程应该怎么样修改??请高手帮忙看下。。
解决方案 »
- 定时备份和删除数据
- 求高手分析一个Mysql查询案例
- Mysql:交换行数据的查询怎么写(swapping two rows value)
- 我为何在官方找不到mysql administrator 和 mysql query browser的下载呀?
- 关于PGSQL的事务问题
- 请问mysql里条件if..else吗?
- MySQL能否胜任1000000(一百万)级别的数据量?
- 怎样吧mysql中用户的mail用sql导到.txt里呀!!!!在线等
- EF6+MySQL字段类型对应问题 !有无试过的呢
- mysql 存储过程问题
- MySQL 5.0能不能产生随机的,没有使用过的ID号?
- 这个该用什么类型?
begin
declare exit handler for sqlexception rollback;
start TRANSACTION;
insert into tablename values(ia+1,'2009-01-01 10:00:00','2009-01-02 11:00:00');
insert into tablename values(ia+2,'2009-01-01 10:00:00','2009-01-02 11:00:00');
insert into tablename values(ia,'2009-01-01 10:00:00','2009-01-02 11:00:00');
-- ROLLBACK;
COMMIT ;
end红色部分,只要出现SQL错误,自动回滚。