我是PostgreSQL的新手,并尝试使用外键创建表。但我在下面收到错误。
create table User_Role
(
RoleId serial primary key not null,
RoleCode varchar(21),
Rolename varchar(30),
isActive bool
)
CREATE TABLE User_Account(
UserId serial primary key not null,
RoleId_ref int REFERENCES User_Role (RoleId) NULL,
Username text NULL,
Password text NULL,
IsActive bool NULL
)
CREATE TABLE User_Profile(
ProfileId serial primary key not null,
UserId_ref int REFERENCES User_Account (UserId) NULL,
RoleId_ref int REFERENCES User_Role (RoleId) NULL,
FirstName Text NULL,
LastName Text NULL,
Address Text NULL,
City varchar(100) NULL
)
前两个表创建成功。但是最后一个表发生了创建错误。
错误:外键约束中引用的列“roleid”不存在 SQL状态:42703
但我无法理解为什么。
答案 0 :(得分:1)
尝试维护此语法以添加外键约束
CREATE TABLE x(t INT PRIMARY KEY);
CREATE TABLE y(s INT);
ALTER TABLE y ADD COLUMN z INT;
ALTER TABLE y
ADD CONSTRAINT y_x_fkey FOREIGN KEY (z)
REFERENCES x (t)
ON UPDATE CASCADE ON DELETE CASCADE;