日期:2014-05-20  浏览次数:20538 次

关于字段约束的疑难问题!!!!!!
我现有张表  
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