mysql和sql定义外键约束_SQL外键约束的含义及创建

建立外键约束可以对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

AAffA0nNPuCLAAAAAElFTkSuQmCC

UPDATE t_group SET id=3 WHERE id=1

AAffA0nNPuCLAAAAAElFTkSuQmCC

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值