mysql设置字段设置外键后,如何修改外键的值

mysql设置字段设置外键后,如何修改外键的值,第1张

在创建从表的外码时,后面加上on update cascading,意思是从表跟着主表级联发生变化,但是并非所有数据库都支持这个语法,印象中大型数据库Oracle、DB2、SQL Server都支持,MySQL就不清楚了,没试过。

应该通过触发器trigger实现。表之间的数据是不能自动更新的,需要为表设置trigger,一般触发器有三种,insert触发,delete触发,update触发,分别对应数据库的三种 *** 作,设置正确的话,用起来很方便。

为已经添加好的数据表添加外键:

语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名)

例: alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id)

//FK_ID是外键的名称

/*

CREATE TABLE `tb_active` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`title` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

`user_id` int(11) NOT NULL,

PRIMARY KEY (`id`),

KEY `user_id` (`user_id`),

KEY `user_id_2` (`user_id`),

CONSTRAINT `FK_ID` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

*/

删除外键

语法: ALTER TABLE table-name DROP FOREIGN KEY key-id

例: ALTER TABLE `tb_active` DROP FOREIGN KEY 'FK_ID'

自动键更新和删除:

外键可以保证新插入的记录的完整性,但是,如果在REFERENCES从句中已命名的表删除记录会怎么样?在使用同样的值作为外键的辅助表中会发生什么?

很明显,那些记录也应该被删除,否则在数据库中就会有很多无意义的孤立记录,MYSQL可以通过向FOREIGN KEY...REFERENCES修饰符添加一个ON DELETE 或ON UPDATE子句简化任务,它告诉了数据库在这种情况如何处理孤立任务。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/7415986.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存