繁体   English   中英

PostgresQL外键语法错误

[英]PostgresQL Foreign Key Syntax Error

尝试在相应数据库中创建第二个表时,出现以下错误消息:

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”声明为以下方式之一。 (如果表与文件的路径有关,则您可能需要第二个。)

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

这些独特的约束意味着完全不同的事物,并且每个约束都需要不同的外键引用。 假设您想用第二种方式声明“ auth_table”,那么“ master_table”可能应该像其中一种那样声明。 (故意忽略级联的更新和删除。)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM