mysql如何从给外键赋值

2023年 8月 10日 62.4k 0

在MySQL中给外键赋值分为两种情况:

第一种情况是在创建表的时候声明外键约束:

CREATE TABLE `table1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`related_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `related_id_index` (`related_id`),
CONSTRAINT `fk_related_id` FOREIGN KEY (`related_id`) REFERENCES `table2` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

在上述代码中,我们创建了一张名为table1的表,其中关键字CONSTRAINTx声明了外键约束,fk_x则是设置的外键名。这样子,在table1表的related_id外键就会参照table2表的id字段来进行关联了。

第二种情况是在表创建好之后,通过ALTER TABLE语句来给表添加外键约束:

ALTER TABLE `table1`
ADD CONSTRAINT `fk_related_id` FOREIGN KEY (`related_id`) REFERENCES `table2` (`id`);

这里我们通过ALTER TABLE语句给table1表添加了外键约束,同样的`fk_related_id`是设置的外键名字。

无论是在创建表的时候还是之后通过ALTER TABLE语句来添加外键约束,在添加外键约束之后,我们需要给关联字段related_id赋值,如果值在table2表中不存在,则会报错。

给外键赋值,可以直接通过INSERT语句来实现:

INSERT INTO `table1` (`id`, `name`, `related_id`)
VALUES (NULL, 'test', 1);

这里我们给table1表的id和name字段赋值,将related_id字段赋值为1,表示此数据与table2表中id为1的数据关联。当然,如果在table2表中找不到id为1的数据,则会报错。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论