PostgresQL外键语法错误
在尝试在此相应数据库中创建第二个表时,我收到以下错误消息:PostgresQL外键语法错误,sql,postgresql,foreign-keys,ddl,Sql,Postgresql,Foreign Keys,Ddl,在尝试在此相应数据库中创建第二个表时,我收到以下错误消息: ERROR: syntax error at or near "REFERENCES" LINE 3: master_directory REFERENCES auth_table (directory), 以下是我试图创建的数据库结构: CREATE TABLE auth_table ( id SERIAL PRIMARY KEY, directory VARCHAR, image VARCHAR ) CREATE TABLE
ERROR: syntax error at or near "REFERENCES"
LINE 3: master_directory REFERENCES auth_table (directory),
以下是我试图创建的数据库结构:
CREATE TABLE auth_table (
id SERIAL PRIMARY KEY,
directory VARCHAR,
image VARCHAR
)
CREATE TABLE master_table (
id SERIAL PRIMARY KEY,
master_directory references auth_table (directory),
master_image references auth_table (image)
)
我为什么会收到那个错误?任何帮助都将不胜感激 您已经关闭了数据类型,但语法错误是您遇到的最小问题 外键引用需要引用唯一列。所以“auth_table”可能需要通过以下方式之一声明。(如果表与文件路径有关,则可能需要第二个。) 这些独特的约束意味着完全不同的事情,每个约束都需要不同的外键引用。假设您想以第二种方式声明“auth_table”,那么“master_table”可能应该像下面这样声明。(故意忽略级联更新和删除。)
列应该有一个数据类型(在
引用
之前),varchar键通常不是一个好主意。另外应该有一个在定义的)
后面加上code>。@joop忘了包括;按照我的定义,是我的错。我不知道引用之前的数据类型是必要的!我认为引用总是采用与原始引用相同的数据类型。非常感谢!引用外键-该值必须是唯一的吗?就像如果两个表中的值都保持不变一样?外键约束必须引用对其具有某种唯一约束的一个或多个列——unique
、not null unique
,或主键
。
CREATE TABLE auth_table (
id SERIAL PRIMARY KEY,
directory VARCHAR not null unique,
image VARCHAR not null unique
);
CREATE TABLE auth_table (
id SERIAL PRIMARY KEY,
directory VARCHAR not null,
image VARCHAR not null,
unique (directory, image)
);
CREATE TABLE master_table (
master_directory varchar not null,
master_image varchar not null,
primary key (master_directory, master_image),
foreign key (master_directory, master_image)
references auth_table (directory, image)
);
CREATE TABLE master_table (
id integer primary key,
foreign key (id) references auth_table (id)
);