我正在关注关于SQL的UDEMY课程。教师正在使用postgresql。我在MySQL工作台工作。我们的企业开发在AWS平台上的MySQL 5.6中。所以我想在MySQL中学习。
有一个讲座"创建表格"并使用约束和外键命令链接两个不同表中的主键。这是我想对我的数据做的事情,所以挑战是相关的。教师的代码不能为我编译。我得到"错误代码1215.无法添加外键约束"。
我在这里读到变量必须具有完全相同的定义。所以我从" serial"更改了教师的表格。到int。我仍然得到错误。我试过简化代码。我还没有到达任何地方。任何人都可以帮助我理解为什么它没有执行吗?
create table if not exists accounts(
user_id INT auto_increment not null,
username varchar(50) unique not null,
password varchar(50) not null,
email varchar(350) unique not null,
created_on timestamp not null,
last_login timestamp,
primary key (user_id)
);
create table if not exists role(
role_id INT auto_increment not null,
role_name varchar(250) unique not null,
PRIMARY KEY (role_id)
);
create table accounts_role(
user_id INT,
role_id INT,
grant_date timestamp,
primary key (user_id, role_id),
constraint accounts_role_role_id_fkey foreign key (role_id)
references role(role_id) match simple
on update no action
on delete no action,
constraint accounts_role_user_id_fkey foreign key (user_id)
references account (user_id) MATCH SIMPLE
on update no action
on delete no action
);
答案 0 :(得分:1)
我意识到我的桌子被命名为“帐户”,我正在为“帐户”创建约束......
create table accounts_role(
user_id INT,
role_id INT,
grant_date timestamp,
primary key (user_id, role_id),
constraint accounts_role_role_id_fkey foreign key (role_id)
references role(role_id) match simple
on update no action
on delete no action,
constraint accounts_role_user_id_fkey foreign key (user_id)
references accounts(user_id) MATCH SIMPLE
on update no action
on delete no action
);