如何在sqlserver2005上创建两个字段组合的unique约束?

如何在sqlserver2005上创建两个字段组合的unique约束?

有表A,B,C,  
A有两个字段rb,rc,分别外键参照B表和C表的主键,   现在我想建立一个rb和rc字段的组合unique约束,   sql语句要怎么写?

作者: dunnice   发布时间: 2007-01-26

CREATE   FUNCTION   CheckFnctn(rb   VARCHAR(30),rc   VARCHAR(30))
RETURNS   int
AS  
BEGIN
      DECLARE   @retval   int
      DECLARE       @BCNT   int
      DECLARE       @CCNT   int
    SELECT   @ACNT   =COUNT(1)   FROM   B   WHERE   ID=rb  
    SELECT   @CCNT   =COUNT(1)   FROM   C   WHERE   ID=rc  
      IF   @ACNT+   @CCNT=2   THEN
          SET   @retval=1
      ELSE
          SET   @retval=0
      RETURN   @retval
END
ALTER   TABLE   A
ADD   CONSTRAINT   chk   CHECK   (dbo.CheckFnctn()   =   1   );

作者: hrb2008   发布时间: 2007-01-26

谢谢,   但是确实没有看懂

作者: dunnice   发布时间: 2007-01-26

约束里面放个自定义函数,函数是两字段组合函数.例子中返回1代表有符合两列都存在的记录,否则不符合

作者: hrb2008   发布时间: 2007-02-07

mark

作者: ldw701   发布时间: 2007-02-08

引用 1 楼 hrb2008 的回复:
CREATE FUNCTION CheckFnctn(rb VARCHAR(30),rc VARCHAR(30))
RETURNS int
AS
BEGIN
DECLARE @retval int
DECLARE @BCNT int
DECLARE @CCNT int
SELE……


  二楼方法好,但是你的方法不是有错吗?
ALTER TABLE A 
ADD CONSTRAINT chk CHECK (dbo.CheckFnctn() = 1 );这里的CheckFnctn()少了两个参数怎么算?

作者: chcr648936277   发布时间: 2011-04-01