如何在sqlserver2005上创建两个字段组合的unique约束?
如何在sqlserver2005上创建两个字段组合的unique约束?
有表A,B,C,
A有两个字段rb,rc,分别外键参照B表和C表的主键, 现在我想建立一个rb和rc字段的组合unique约束, sql语句要怎么写?
有表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 );
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……
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