我可以删除一个表,如果它存在使用以下代码,但不知道如何做同样的约束:
IF EXISTS(SELECT 1 FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'TableName') AND type = (N'U')) DROP TABLE TableName
go
我还使用以下代码添加了约束:
ALTER TABLE [dbo].[TableName]
WITH CHECK ADD CONSTRAINT [FK_TableName_TableName2] FOREIGN KEY([FK_Name])
REFERENCES [dbo].[TableName2] ([ID])
go
这比目前提出的解决方案简单得多:
IF (OBJECT_ID('dbo.FK_ConstraintName', 'F') IS NOT NULL)
BEGIN
ALTER TABLE dbo.TableName DROP CONSTRAINT FK_ConstraintName
END
如果你需要删除另一种类型的约束,这些是传入OBJECT_ID()函数的第二个参数位置的适用代码:
C = CHECK constraint
D = DEFAULT (constraint or stand-alone)
F = FOREIGN KEY constraint
PK = PRIMARY KEY constraint
UQ = UNIQUE constraint
也可以使用不带第二个参数的OBJECT_ID。
完整的类型列表在这里:
对象类型:
AF = Aggregate function (CLR)
C = CHECK constraint
D = DEFAULT (constraint or stand-alone)
F = FOREIGN KEY constraint
FN = SQL scalar function
FS = Assembly (CLR) scalar-function
FT = Assembly (CLR) table-valued function
IF = SQL inline table-valued function
IT = Internal table
P = SQL Stored Procedure
PC = Assembly (CLR) stored-procedure
PG = Plan guide
PK = PRIMARY KEY constraint
R = Rule (old-style, stand-alone)
RF = Replication-filter-procedure
S = System base table
SN = Synonym
SO = Sequence object
适用于:SQL Server 2012 ~ SQL Server 2014。
服务队列
TA =组装(CLR) DML触发器
TF = SQL表值函数
SQL DML触发器
TT =表类型
U =表(自定义)
UQ = UNIQUE约束
V =视图
扩展存储过程