日期:2014-05-18  浏览次数:20351 次

高手请进来:求一个约束的写法
有tableA   里面有c1,c2,c3三个字段,默认值都为null

我想求一条约束的写法,能使能这个表的添加,修改操作时,c1,c2,c3这三个字段中,有且只有一个的值不为null.

谢谢大家。



------解决方案--------------------
这种动态的约束,需要通过触发器实现。
------解决方案--------------------
约束实现不了这样复杂的功能 只能通过触发器实现
------解决方案--------------------
約束不行的,可以用觸發器實現,但個人認為沒有必要
像這種情況,在前台控制不更好嗎?為什么非得交給數據庫做呢?

------解决方案--------------------
create TRIGGER trig_CheckNull
ON dbo.a
AFTER INSERT,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
if exists(select top 1 C1 from inserted where isnull(isnull(isnull(c1,c2),c3),0)=0)
begin
rollback
raiserror( 'C1、C2和C3中至少一個不能為空 ',11,1)
end
-- Insert statements for trigger here

END
GO