2010-10-13 116 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有你想要的...