假设我有以下设置:如何指定列中的值必须已经存在于另一个表中?
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 to t2.t1_txt?
非常感谢。
实际上听起来不错。但对于问题1,这个想法是一个约束条件,它指定t1中必须存在t1_txt,而不必使id和t1_id重合。这听起来像是一个触发器的工作......有没有其他方法? –
是否有可能误解了外键的使用? –
@leinaD_natipaC我认为你的要求听起来很奇怪 - _typically_ foriegn _ID_被用作键而不是非键_property_。如果_text_值(在't1'中是非唯一的)需要在t1中存在,那么是的,我会说使用触发器来处理,但使用't1_id'将是一个更干净的解决方案。 –