Sql server 2005 对于2个允许null的字段,如何创建一个只需填充一个的约束?
为了简化这一点,让我们以该表为例:Sql server 2005 对于2个允许null的字段,如何创建一个只需填充一个的约束?,sql-server-2005,Sql Server 2005,为了简化这一点,让我们以该表为例: table1 ------------- id unique primary int myVal1 int null (fk) myVal2 int null (fk) myData int not null 在该表上创建约束以便只能填充一个值的最佳方法是什么 这些措施将起作用: insert into table1 (myval1,myData) values (1,234) insert into table1 (myval2,myData)
table1
-------------
id unique primary int
myVal1 int null (fk)
myVal2 int null (fk)
myData int not null
在该表上创建约束以便只能填充一个值的最佳方法是什么
这些措施将起作用:
insert into table1 (myval1,myData) values (1,234)
insert into table1 (myval2,myData) values (1,123)
这些将不起作用:
insert into table1 (myData) values (234)
insert into table1 (myVal1,myval2,myData) values (1,2,123)
尝试使用检查约束:
CREATE TABLE dbo.Table1
(
rowID int NOT NULL primary key identity(1,1),
myVal1 int NULL,
myVal2 int NULL,
myData int NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE dbo.Table1 ADD CONSTRAINT
CK_Table1_myVal1_or_myVal2 CHECK ((myVal2 IS NOT NULL AND myVal1 IS NULL) OR (myVal2 IS NULL AND myVal1 IS NOT NULL))
GO
尝试使用检查约束:
CREATE TABLE dbo.Table1
(
rowID int NOT NULL primary key identity(1,1),
myVal1 int NULL,
myVal2 int NULL,
myData int NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE dbo.Table1 ADD CONSTRAINT
CK_Table1_myVal1_or_myVal2 CHECK ((myVal2 IS NOT NULL AND myVal1 IS NULL) OR (myVal2 IS NULL AND myVal1 IS NOT NULL))
GO
几小时后测试,现在不行,如果它像我想的那样工作,你会得到绿色支票。几小时后测试,现在不行,如果它像我想的那样工作,你会得到绿色支票