PostgreSQL外键创建错误

时间:2017-12-23 09:28:08

标签: postgresql

我是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

但我无法理解为什么。

1 个答案:

答案 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;