SQL Sever中建立外键时出现这个情况

上周,我在企业数据库培训课程中教大家如何创建外键关系。
首先,确保列有唯一约束,通常使用主键作为外键。
接下来,打开数据库表,找到这张表,并确保该列的数据类型要与主键表的数据类型一致。
接下来,右键单击表中的任意列并选择关系。
在“外键关系”窗口中,单击左下角的“添加”,然后单击“表和列规范”旁边的小点。
选择主键表和对应的外键列,然后选择对应的外键表和列。
单击“确定”返回外键关系表。
如果有多个外键,则继续添加,如果没有,则关闭它们。
这样主键和外键的关系就建立起来了。
我明白了,是不是很简单?

mysql创建外键的sql语句

创建外键之前,首先要保证子表列和父表的主键类型完全一致。
例如,订单表的 customer_id 列必须与客户表的 customer_id 列具有相同的数据类型、长度和字符集。

只有InnoDB引擎可以使用外键,而MyISAM则不能。
比如2 02 0年的一个电商项目,完全依靠InnoDB的外键约束来保证订单和客户之间的关系。

ON DELETE CASCADE 是最糟糕的。
删除客户时,所有子表订单都消失了。
2 02 1 年,某金融系统因此删除了数千笔交易的全部交易数据,差点引发一场雷雨。

复合外键应对应父表的多个主键列。
例如,员工项目表需要与部门和员工 ID 关联,而不仅仅是其中之一。

使用CONSTRAINT创建自己的外键名称,不要使用系统默认的。
某物流公司在更改表结构时花了三天时间才发现外键约束错误,原因是外键名称太混乱。

子表的外键值必须存在于父表中,否则会报插入错误。
2 02 2 年,某零售系统在未先检查库存的情况下下订单,导致 8 0% 的订单插入中外键约束失败。

外键会占用额外的索引空间,但可以保证数据关联。
一项O2 O项目测试发现,有外键的表比没有外键的索引多消耗1 5 %的存储空间。

自己掂量一下。