Microsoft SQL Server-如何仅在插入时强制执行外键,但允许保留孤立外键?
以下是用于当地发展的技术:Microsoft SQL Server-如何仅在插入时强制执行外键,但允许保留孤立外键?,sql,constraints,foreign-key-relationship,orphan,Sql,Constraints,Foreign Key Relationship,Orphan,以下是用于当地发展的技术: Microsoft SQL Server 2016 Web版 假设我有一个叫做CarCompanyTable的表 create table CarCompanyTable( [CarCompanyid] uniqueidentifier DEFAULT newsequentialid() NOT NULL, [CarCompanyName] [nvarchar](200) NOT NULL, [AddressOfLocation] [nvarcha
- Microsoft SQL Server 2016 Web版
create table CarCompanyTable(
[CarCompanyid] uniqueidentifier DEFAULT newsequentialid() NOT NULL,
[CarCompanyName] [nvarchar](200) NOT NULL,
[AddressOfLocation] [nvarchar](200) NOT NULL,
CONSTRAINT [PK_CarCompanyid] PRIMARY KEY CLUSTERED (CarCompanyid)
);
假设我有另一张桌子叫CarTable
create table CarTable(
[CarId] uniqueidentifier DEFAULT newsequentialid() NOT NULL,
[CarName] [nvarchar](200) NOT NULL,
[FKCarCompanyid] uniqueidentifier,
CONSTRAINT [PK_CarId] PRIMARY KEY CLUSTERED (CarId),
CONSTRAINT [FK_CarCompanyTableCarTable] FOREIGN KEY(FKCarCompanyid) REFERENCES [dbo].[CarCompanyTable] (CarCompanyid),
);
如何以这样的方式实施外来约束
1) 检查CartTable中的新插入条目是否存在CarCompanyid外键
2) 但是,如果从CarCompanyTable中删除了CarCompanyTable条目(具有相应的CarTable条目),则允许存在孤立的CarCompanyid外键
create table CarCompanyTable(
[CarCompanyid] uniqueidentifier DEFAULT newsequentialid() NOT NULL,
[CarCompanyName] [nvarchar](200) NOT NULL,
[AddressOfLocation] [nvarchar](200) NOT NULL,
CONSTRAINT [PK_CarCompanyid] PRIMARY KEY CLUSTERED (CarCompanyid)
);
有没有人能告诉我,为了确保满足上述要求,我需要做哪些准确的修改?大多数人都遵循两种策略:
方法#2的缺点是,一旦删除了引用的记录,就无法分辨它过去是什么,也无法恢复它。使用方法#1,您只需编写程序来过滤非活动记录,但如果确实需要,您可以随时查找它们。大多数人都遵循两种策略: