我需要运行一个事务来做“全部或全部”,但我遇到了一些问题。
在下面的示例中,第3个INSERT失败,但我插入了前两个。问题是我需要做全部或全部。或插入全部或不插入任何内容。
我怎样才能在MySQL中做到这一点?我正在使用InnoDB。
START TRANSACTION;
insert into t_orders (id_order, date_begin, date_end) values ('1', '2012-9-08', '2012-9-16');
insert into t_orders_items (id_order, id_order_item, id_item, item_quantity) values ('1', '1', '2', '1');
insert into t_orders_items (id_order, id_order_item, id_item, item_quantity) values ('1', '1', '3', '1');
COMMIT;
一些线索?
最诚挚的问候,
答案 0 :(得分:1)
这取决于您的存储类型。使用InnoDB表,这将有效,但MyISAM不支持事务并忽略START TRANSACTION语句。将表的存储引擎更改为InnoDB。它是一个(小)慢一点,但更安全。
答案 1 :(得分:-1)
您是否有关于这两个表的数据结构的详细信息? 看起来t_orders_items中可能存在主键或唯一,并且您试图插入导致事务失败的类似值
答案 2 :(得分:-1)
安静简单,在表t_orders_items:id_order是主键,你已经插入了相同的值'1'两次..
祝你好运