正如其他地方所提到的,我对SQL和数据库都很陌生.此刻让我的手脏了,尝试所有不同的可能性.
我有一台运行MySQL的服务器并设置下表进行测试:
Field Type Collation Attributes Null Default Extra
id mediumint(8) UNSIGNED No None AUTO_INCREMENT
domain varchar(255) utf8_unicode_ci No None
status enum('...') utf8_unicode_ci No None
replaced_by mediumint(8) UNSIGNED Yes NULL
我们的想法是拥有一个对电子邮件有效的域名列表,例如“gmail.com”和“hotmail.com”.
现在,如果某个域被识别为与另一个域重复(例如“googlemail.com”到“gmail.com”),则状态列会指示此状态,并且“replacement_by”列会将ID提供给要使用的主域.
此外,如果域被识别为无效(例如“gymail.com”而不是“gmail.com”),则数据库可以存储此信息,并且通过状态并且通过脚本替换_可以建议正确的域.
虽然ID是此表的主键,但我想使用ON DELETE RESTRICT和ON UPDATE CASCASE在replacement_by列上测试外键.以便replacement_by列与主ID保持同步.
但不知何故,当我尝试更新数据时,我收到以下错误.为什么?
#1451 - Cannot delete or update a parent row: a foreign key constraint fails (`test`.`domains`, CONSTRAINT `domains_ibfk_1` FOREIGN KEY (`replace