【发布时间】:2015-04-08 08:06:28
【问题描述】:
我想知道如何在 PostgreSQL (9.4) 中轻松地在父表和子表之间移动数据,反之亦然。
假设我设置了以下数据库示例:
DROP TABLE IF EXISTS employee CASCADE;
DROP TABLE IF EXISTS director CASCADE;
CREATE TABLE employee(
id SERIAL PRIMARY KEY NOT NULL,
name VARCHAR(255) NOT NULL,
surname VARCHAR(255) NOT NULL,
employment_date DATE NOT NULL DEFAULT CURRENT_DATE
);
CREATE TABLE director(
director_id SERIAL PRIMARY KEY NOT NULL,
secretary_id INT4 REFERENCES employee(id),
extra_legal_benefits VARCHAR(255) ARRAY
) inherits (employee);
INSERT INTO employee(name, surname)
VALUES ('Alice', 'Alisson');
INSERT INTO employee(name, surname)
VALUES ('Bob', 'Bobson');
INSERT INTO employee(name, surname)
VALUES ('Carol', 'Clarckson');
INSERT INTO director(name, surname, secretary_id, extra_legal_benefits)
VALUES ('David', 'Davidson', 1, '{car, travel expenses}');
如何将其中一名员工提升(移动)到主管表(必须不再出现在父表中)?
我怎样才能将其中一位董事降级(移动)回员工表(必须不再出现在子表中)?
【问题讨论】:
-
VARCHAR(255)- 你知道 255 的限制没有特殊意义,隐藏优化或一些神奇的性能优势与例如值相比376 还是 52957?
标签: postgresql inheritance parent-child