关于字段约束的疑难问题!!!!!!
我现有张表
id char(10)
name char(10)
num int
isExit bit
要求添加一个约束,使
name,num相同时,isEixt不能为0
请问怎样添加这个约束啊???
好难啊!!
------解决方案--------------------试试
CHECK (if(name=num) isEixt <> 0)
------解决方案--------------------如果不成把if判断写到函数中
CREATE FUNCTION CheckFnctn()
RETURNS int
AS
BEGIN
declare @cnt int
SELECT @cnt = count(1) FROM table where name=num and isExit=0
if @cnt> 0
RETURN 0
else
RETURN 1
END;
ADD CONSTRAINT chkRowCount CHECK (dbo.CheckFnctn() <> 0 );
------解决方案--------------------创建唯一约束
I、在数据库关系图中右击将包含约束的表,然后从快捷菜单中选择 "属性 "命令。
-或-
为将包含约束的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择 "属性 "命令。
II、选择 "索引/键 "选项卡。
III、选择 "新建 "命令。系统分配的名称出现在 "索引名 "框中。
IV、在 "列名 "下展开列的列表,选择要将约束附加到的列。若要将约束附加到多个列,在后续行中选择其它的列。
V、选择 "创建 UNIQUE "复选框。
VI、选择 "约束 "选项。
当保存表或关系图时,唯一约束即创建在数据库中。
------解决方案--------------------改一下约束里的函数吧
CREATE FUNCTION CheckFnctn()
RETURNS int
AS
BEGIN
declare @cnt int
select @cnt =min(isExit) from table where name=num group by name,num having count(1)> 1
if @cnt> 0
RETURN 0
else
RETURN 1
END;
ADD CONSTRAINT chkRowCount CHECK (dbo.CheckFnctn() <> 0 );
------解决方案--------------------select min(isEixt) from table group by name having count(1)> 1