gpt4 book ai didi

mysql - 使用SQL语法连接数据库中的表

转载 作者:行者123 更新时间:2023-11-29 10:44:23 25 4
gpt4 key购买 nike

我正在尝试连接数据库中的两个表。我有表用户和表权限。

用户表:

CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(45) DEFAULT NULL,
`last_name` varchar(45) DEFAULT NULL,
`email` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

权限表:

CREATE TABLE `authorities` (
`authorities_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(45) DEFAULT NULL,
`authorities` varchar(45) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,

PRIMARY KEY (`authorities_id`),
CONSTRAINT FOREIGN KEY(`user_id`) REFERENCES user(`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

表是这样创建的。创建权限表时出现错误,无法创建表。我做错了什么?

最佳答案

使用下面的代码或者不使用“CONSTRAINT”

CREATE TABLE `authorities` (
`authorities_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(45) DEFAULT NULL,
`authorities` varchar(45) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,

PRIMARY KEY (`authorities_id`),
FOREIGN KEY(`user_id`) REFERENCES user(`id`)
ON DELETE CASCADE

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

给约束命名

CREATE TABLE `authorities` (
`authorities_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(45) DEFAULT NULL,
`authorities` varchar(45) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,

PRIMARY KEY (`authorities_id`),
CONSTRAINT `fk_authorities_user` FOREIGN KEY(`user_id`) REFERENCES user(`id`)
ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

link

INNODB 中还有一个问题,你不能使用“ON DELETE SET DEFAULT”,而必须使用“ON DELETE CASCADE”或“ON DELETE SET NULL”

关于mysql - 使用SQL语法连接数据库中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44888868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com