假设我有以下设置:
CREATE TABLE t1 (
id integer PRIMARY KEY,
txt character varying(30));
CREATE TABLE t2 (
id integer PRIMARY KEY,
t1_id integer,
t1_txt character varying,
FOREIGN KEY (t1_id) REFERENCES t1(id));
由于...嗯,“优化”的原因,我需要t2.t1_txt存在于t1中的某个地方,几乎就像它是一个外键,但是没有唯一约束。我的第一个问题是:最好的方法是什么?
我的第二个问题是:使用这些相同的表格,当t2.t1_id = t1.id时,强制t2.t1_txt与t1.txt重合的最佳方法是什么?如何从t1.txt级联更新到t2.t1_txt?
非常感谢。
答案 0 :(得分:1)
听起来你正在复制两个表之间txt
的值。 可以使用插入/更新触发器执行此操作,但我建议使用视图:
CREATE TABLE t1 (
id integer PRIMARY KEY,
txt character varying(30));
CREATE TABLE t2 (
id integer PRIMARY KEY,
t1_id integer,
FOREIGN KEY (t1_id) REFERENCES t1(id));
CREATE VIEW t2ANDt1
AS
SELECT
id,
t1_id,
t1.txt
FROM t2
INNER JOIN t1 ON t2.t1_id = t1.id
答案 1 :(得分:0)
从表t2中取出t1_txt
将t1.id添加到表t2
将其设为t1的外键