MYSQL创建表,约束,外键

时间:2017-11-18 05:53:50

标签: mysql postgresql

我正在关注关于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
);

1 个答案:

答案 0 :(得分:1)

好悲伤 谢谢Caius,我正在实施你的建议,我找到了问题的答案。

我意识到我的桌子被命名为“帐户”,我正在为“帐户”创建约束......

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
);