mou*_*aim 2 sql-server-2008 foreign-key primary-key
在 sql server 2008 中,主键和引用它的外键是否必须具有相同的列大小?有人可以告诉我一个解释这个的文档的链接吗?
谢谢你的帮助。
是的。它在 MSDN 文档页面中:外键关系
FOREIGN KEY
在表级别指定的约束必须具有与约束列列表中的列数相同的引用列数。每个引用列的数据类型也必须与列列表中对应的列相同。
该页面没有提供更多详细信息,但测试表明“相同数据类型”意味着相同类型和相同大小。此外,如果尝试FOREIGN KEY
在 aVARCHAR(20)
和VARCHAR(30)
列之间进行约束,
CREATE TABLE a
( aid VARCHAR(20) PRIMARY KEY ) ;
CREATE TABLE b
( bid INT PRIMARY KEY,
aID VARCHAR(30) ) ;
ALTER TABLE b
ADD CONSTRAINT test_different_sizes
FOREIGN KEY (aid)
REFERENCES a (aid) ;
Run Code Online (Sandbox Code Playgroud)
架构创建失败:列
a.aid
的长度或比例与引用b.aid
外键中的列不同test_different_sizes
。参与外键关系的列必须定义为相同的长度和比例。
另请注意,某些 DBMS(如 Oracle、MySQL、Postgres)允许相同数据类型(即VARCHAR
或CHAR
)但大小不同的列之间的外键。
Postgres 甚至不那么严格。它允许列之间的外键CHAR
,VARCHAR
或TEXT
任何组合的数据类型。
归档时间: |
|
查看次数: |
3913 次 |
最近记录: |