是否可以一次向多个表中插入一行?如果你用一个ID来做几个表;在INSERT失败的情况下,确保完整性的最佳方法是什么?MySQL多插入? MySQL数据库完整性失败后INSERT
1
A
回答
4
这正是transactions的用途。如果有任何命令失败,因为START TRANSACTION
整个事情回滚:
START TRANSACTION;
INSERT INTO sometable VALUES(NULL,'foo','bar');
INSERT INTO someothertable VALUES (LAST_INSERT_ID(),'baz');
COMMIT;
这是MySQL,你不能用MyISAM表使用事务处理(你需要的表使用一些引擎支持该,可能InnoDB)。
这将永远不会被插入到表(通常你有一些分支,如一个IF):
START TRANSACTION;
INSERT INTO sometable VALUES(NULL,'data','somemoredata');
ROLLBACK;
警告:那些更改数据库结构 SQL命令(例如CREATE
,ALTER
, DROP
)无法回滚!
+1
谢谢!我的表是MyISAM;我将与 转换>> ALTER TABLE mytable ENGINE = InnoDB; – KeatsKelleher 2010-08-26 15:05:57
1
0
MySQL能够insert multiple rows(搜索“多行”)是这样的:
INSERT INTO table (field1, field2, ...) VALUES (value1, value2), (value3, value4), etc...
然而,有没有办法告诉什么让插入,什么不是因违反约束,超出了查询,返回记录数,重复数和警告数。您也不能使用last_insert_id()
来确定新行的ID,因为它只返回创建的LAST ID,而不是一组ID。
如果您需要保证完整性,请使用单行插入语句和事务。 “
相关问题
- 1. MySql INSERT失败
- 2. 多个MySQL行INSERT失败
- 3. MySQL的INSERT失败
- 4. 插入MySql失败
- 5. MySQL数据的完整性?
- 6. MySQL的导入数据库失败
- 7. 完全加入Mysql失败
- 8. 删除后PHP MySQL插入失败
- 9. PHP插入到mysql后丢失数据
- 10. 插入数据库失败
- 11. 数据库插入失败
- 12. 数据库插入失败
- 13. 缓存的mysql插入 - 保留数据的完整性
- 14. INSERT INTO与node-mysql失败
- 15. MySQL INSERT BEFORE TRIGGER失败?
- 16. MySQL插入失败innodb
- 17. MySQL插入表失败
- 18. MySQL插入失败,'&'字符
- 19. MySQL复制Slave_SQL_Running在插入数据后失败
- 20. 插入MySQL数据库的PHP PDO代码失败
- 21. MySQL的插入查询失败太多的数据
- 22. Mysql多数据库插入(Java,Hibernate,Jboss)
- 23. 导入MySQL 5.1时MySQL 5.1数据库导出失败
- 24. PHP数组插入MySQL失败
- 25. PHP MySQL插入数据库
- 26. MySQL数据库插入
- 27. 插入到mysql数据库
- 28. MySQLSyntaxError插入MySQL数据库
- 29. 插入MySQL数据库
- 30. 插入数据库MySQL Django
”一次插入一行到多个表“听起来像一个不好的数据库设计。将值插入一个表中,获取该行的id(主键)并相应地使用id值更新其他表。 – Chris 2010-08-26 14:53:07
所以我应该把200个字段和超过100万条目放在同一个表中? – KeatsKelleher 2010-08-27 13:00:50