假设我有一个名为Suppliers的表,我想删除第一行:
delete from suppliers where supplierID = 1
在先前的查询之后,“做什么必须保持一致性”是什么意思?主键(SupplierID)是使用AUTO_INCREMENT创建的。
答案 0 :(得分:2)
如果您使用的是AUTO_INCREMENT,那么您无法按照自己的想法进行操作,因为数据库中的AUTO_INCREMENT键用于唯一标识给定的行。找到最低未使用键值的最佳方法是根本不使用AUTO_INCREMENT,并手动管理键。
另外要提到您可以使用ON DELETE CASCADE自动删除InnoDB数据库中的相关记录,但是在MyISAM中您必须手动删除它们。
同时检查此reference。
答案 1 :(得分:0)
要保持同步性,您应该在指向Suppliers.supplierID
的从属表中使用InnoDB endine和foreign键。
如果您尝试删除任何其他表中引用的记录,则数据库将发出错误。
http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
第一个供应商的ID可以这样找到:
SELECT MIN( supplierID ) FROM Suppliers