gpt4 book ai didi

sql - Postgresql SET DEFAULT value 来自另一个表 SQL

转载 作者:行者123 更新时间:2023-11-29 12:32:36 25 4
gpt4 key购买 nike

我正在制作一个 sql 脚本,所以我已经创建了表,现在我有了一个包含列的新表。一列有一个 FOREIGN KEY,所以我需要将此值设为 SET DEFAULT 为原始表的值。例如考虑这两个表

PERSON(姓名,姓氏,ID,年龄);

雇主(名字,姓氏,行业,年龄);

在 Employer 中,我需要将 AGE 设置为 Person 的默认 AGE,这仅当 PERSON 有行或只有 1 行时。

IDperson 的主键,Surname,Sectoremployer 的主键,AGE 是 Employer 中的 FOREIGN KEY引用自 Person

例子:

CREATE TABLE PERSON(
name VARCHAR(30) ,
surename VARCHAR(20),
ID VARCHAR(50) PRIMARY KEY,
Age INT NOT NULL,
);
CREATE TABLE EMPLOYER(
name VARCHAR(30) ,
Surename VARCHAR(20),
Sector VARCHAR(20),
Age INT NOT NULL,
PRIMARY KEY (Surename,Sector),
FOREIGN KEY (Age) REFERENCES Person(Age) //HERE SET DEFAULT Person(Age), how'??
);

最佳答案

除去本练习中糟糕的设计选择,可以使用触发器将一列的值分配给另一列的值。

下面的粗略工作示例:

create table a (
cola int,
colb int) ;

create table b (
colc int,
cold int);

Create or replace function fn()
returns trigger
as $$ begin
if new.cold is null then
new.cold = (select colb from a where cola = new.colc);
end if;
return new;
end;
$$ language plpgsql;

CREATE TRIGGER
fn
BEFORE INSERT ON
b
FOR EACH ROW EXECUTE PROCEDURE
fn();

关于sql - Postgresql SET DEFAULT value 来自另一个表 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42782469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com