2010-10-13 108 views
0

如果我在表A和表B中的主鍵在同一個數據庫(表B有它自己的主鍵)我創建一個關係與表A中的主鍵,以便一列在表B中是外鍵,這是否意味着在表A的主鍵列中創建的主鍵數據也將由於它是外鍵列而被添加到表B中,還是必須對該關係進行編碼,如果是的話,我該怎麼做呢?SQL Server密鑰和外鍵

回答

3

在回答你的問題:

...我是否有代碼 的關係,如果是的話,我該怎麼去 呢?

您將需要定義兩個表之間的關係。例如:

ALTER TABLE tableB 
ADD CONSTRAINT FK_tableB_TableA FOREIGN KEY (tableAId) 
    REFERENCES tableA (id) ; 

當您向tableB插入一條記錄時,您仍然需要定義tableAId is。 SQL Server不會奇蹟般地知道這應該是什麼。

所以假設如果TABLEA是這樣的:

1 | Some text | 1/1/2020 
2 | blah blah | 6/1/2021 

插入一條記錄TableB中所引用記錄2,你需要做的是:

INSERT INTO TableB (2,'My important information') 

這是假設tableB的結構如下:

TableB 
--------- 
Id --identity column/pk 
tableAId --fk 
SomeTextColumn 
+0

感謝您的及時答覆我想我現在明白了。 – simon 2010-10-13 18:51:50

0

我不完全確定你在問什麼,但是如果你想在表A中插入一條記錄並將相關記錄插入到表B中,那麼你必須指定表A中記錄的ID作爲值在表B的外鍵字段中。

下面是一個示例:表作者的字段爲idname

INSERT author (id, name) VALUES (5, 'James Joyce') 

現在桌上的書有場idauthor_idtitle

INSERT book (id, author_id, title) VALUES(99, 5, 'Ulysses') 

如果是自動生成作者的id場,那麼你就不會在INSERT語句中指定它,你會使用@@IDENTITY property檢索其值。

1

你的問:意思是,在表A中的主鍵列創建的主密鑰數據也將藉助於它是一個外鍵列

都能跟得上的被添加到表B,foriegn鍵不會將數據輸入到其他表格中。在插入引用表B中的foriegn鍵的記錄之前,您需要表A中的記錄。

問題2:或者是否必須編碼該關係?如果是這樣,我該怎麼做?

插入到表A,然後插入到表B.觸發器可以放在TableA上插入一條記錄到表B,當數據被輸入到TABLEA有你想要的...