sql server中列值 必须存在于另一表的一列的约束怎么写啊

2025-02-23 00:46:27
推荐回答(2个)
回答1:

问题补充:

因为是不同库下面的检验,两表没有直接关系,所以一定要是约束
呵呵,我就要约束,让他自动判断,函数还要单独执行呢
-----------------------------------------
只可用下面的方法约束,下面的约束引用函数,函数引用Test.dbo.T判断,明白了没

用一个函数判断
go

USE Test
GO
CREATE TABLE t(ID INT PRIMARY KEY)

GO
USE tempdb
GO
CREATE FUNCTION chk_T2(@TID INT)
RETURNS BIT
AS
BEGIN
IF EXISTS(SELECT 1 FROM test.dbo.T WHERE ID=@TID)
RETURN 1
RETURN 0
END
go

CREATE TABLE t2(TID INT NOT NULL CHECK (dbo.chk_T2(TID)=1),Num int)

go
INSERT T2(TID,Num) VALUES(10,10)

go
SELECT * FROM Test.dbo.T
go
DROP TABLE T2
DROP FUNCTION chk_T2
DROP TABLE test.dbo.T

回答2:

直接用外键不完了