如果我在表A和表B中的主键在同一个数据库(表B有它自己的主键)我创建一个关系与表A中的主键,以便一列在表B中是外键,这是否意味着在表A的主键列中创建的主键数据也将由于它是外键列而被添加到表B中,还是必须对该关系进行编码,如果是的话,我该怎么做呢?SQL Server密钥和外键
0
A
回答
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
我不完全确定你在问什么,但是如果你想在表A中插入一条记录并将相关记录插入到表B中,那么你必须指定表A中记录的ID作为值在表B的外键字段中。
下面是一个示例:表作者的字段为id
和name
。
INSERT author (id, name) VALUES (5, 'James Joyce')
现在桌上的书有场id
,author_id
和title
。
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有你想要的...
相关问题
- 1. 更改密钥和外键
- 2. SQL Server日志传送和主密钥
- 3. SQL Server证书和对称密钥
- 4. SQL Server 2005光盘密钥
- 5. SQL Server 2012 - 循环密钥
- 6. SQL Server主键/外键
- 7. 外键作为Commposite密钥-PK
- 8. 外键上的外键 - SQL Server
- 9. 使用证书和对称密钥加密SQL Server数据
- 10. 删除SQL Server中的外键和列
- 11. SQL Server 2005外键和索引
- 12. SQL Server,查找外键列的总和
- 13. SQL Server 2008外键约定
- 14. SQL Server 2005外键级联
- 15. 添加外键,SQL SERVER 2008
- 16. 创建新外键(SQL Server)
- 17. SQL Server外键问题
- 18. SQL Server 2008外键错误
- 19. SQL Server中的外键
- 20. SQL Server的外键引用
- 21. Primay密钥的外键保留值
- 22. mysql外键foriegn密钥关系
- 23. SQL Server - 密钥更新的死锁
- 24. SQL Server 2008唯一密钥约束
- 25. 在SQL Server中创建主密钥
- 26. 在SQL Server中实现引用密钥
- 27. 检查唯一密钥在SQL Server
- 28. SQL Server数据库主密钥
- 29. 在密钥上的SQL Server 2005死锁
- 30. Azure SQL Server虚拟机与个人SQL Server生产密钥
感谢您的及时答复我想我现在明白了。 – simon 2010-10-13 18:51:50