Ste*_*and 5 postgresql foreign-key syntax
我想知道这个例子
CREATE TABLE cities (
city varchar(80) primary key,
location point
);
CREATE TABLE weather (
city varchar(80) references cities(city),
temp_lo int,
temp_hi int,
prcp real,
date date
);
Run Code Online (Sandbox Code Playgroud)
cityas的定义在varchar(80) 这里重复。是否有允许不重复的 PostgreSQL 语法varchar(80),仅基于references cities(city)以创建天气表?
没有办法做到这一点。而且,坦率地说,我认为没有必要。
请记住,引用列和引用列不必共享相同的数据类型。它们只需要=在它们之间定义一个运算符。
如果您的目标是缩短语法,则可以省略引用列的列(或列列表)(如果它是 PK):
CREATE TABLE weather (
city text references cities,
temp_lo int,
...
Run Code Online (Sandbox Code Playgroud)
示例中的数据类型兼容但不相同(textvs. varchar(80)),假设引用的列是表的主键cities。
我引用手册CREATE TABLE:
如果省略 refcolumn,则使用 reftable 的主键