And*_*ill 3 foreign-key sql-server subtypes
我有两个表:
联系人(ID,类型);
地址(ID)。
是否可以定义从地址(ID,'A')到联系人(ID,类型)的外键?
假设您要实现两个表之间的超类型/子类型关系(anAddress
是 a Contact
),您可以使用具有固定值的列'A'
并将其用作外键:
CREATE TABLE Contact
( ID INT NOT NULL IDENTITY,
Type VARCHAR(10) NOT NULL,
PRIMARY KEY (ID, Type)
) ;
Run Code Online (Sandbox Code Playgroud)
和
CREATE TABLE Address
( ID INT NOT NULL,
Type VARCHAR(10) NOT NULL DEFAULT 'A',
CHECK (Type = 'A'),
PRIMARY KEY (ID, Type),
FOREIGN KEY (ID, Type)
REFERENCES Contact (ID, Type)
) ;
Run Code Online (Sandbox Code Playgroud)
或者,我们可以Type
在 Address 中声明为持久计算列(那时不需要检查约束):
Type AS CAST('A' AS varchar(10)) PERSISTED
CREATE TABLE Address
( ID INT NOT NULL,
Type AS CAST('A' AS varchar(10)) PERSISTED NOT NULL,
PRIMARY KEY (ID, Type),
FOREIGN KEY (ID, Type)
REFERENCES Contact (ID, Type)
) ;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1833 次 |
最近记录: |