为了账号安全,请及时绑定邮箱和手机立即绑定

SQL外键约束的含义及创建

标签:
MySQL SQL Server

建立外键约束可以对sql语句的增删改有约束作用。
外键取值规则:空值或参照的主键值。
(1)插入非空值时,如果主键表中没有这个值,则不能插入。
(2)更新时,不能改为主键表中没有的值。
(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。
(4)更新主键记录时,同样有级联更新和拒绝执行的选择。


举例如下:
创建表并插入语句

 CREATE TABLE t_group(
    id INT PRIMARY KEY,
    NAME VARCHAR(30)
)

INSERT INTO t_group VALUES(1,'group1');
INSERT INTO t_group VALUES(2,'group2');

CREATE TABLE t_user(
    id INT PRIMARY KEY,
    NAME VARCHAR(30),
    groupid INT FOREIGN KEY REFERENCES t_group(id)
)

INSERT INTO t_user VALUES(1,'user1',1);
INSERT INTO t_user VALUES(2,'user2',2);

其中,t_user是主表,id列是主键,groupid是在表t_group(id)的外键

INSERT INTO t_user VALUES(3,'user3',3);

以上语句因为插入groupid=3,违反外键约束。
插入非空值时,如果主键表中没有这个值,则不能插入。

DELETE FROM t_group WHERE id=2

图片描述

UPDATE t_group SET id=3 WHERE id=1

图片描述
如果需要修改外键约束,比如,要在外键上允许级联修改,但限制删除,则执行下面语句。

ALTER TABLE t_user DROP CONSTRAINT FK_T_USER_GROUPID

ALTER TABLE t_user ADD CONSTRAINT FK_T_USER_GROUPID FOREIGN KEY(GroupID) 
REFERENCES T_GROUP(ID) ON UPDATE CASCADE ON DELETE no action  

点击查看更多内容
3人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消