假設我有以下設置:如何指定列中的值必須已經存在於另一個表中?
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'將是一個更乾淨的解決方案。 –