gpt4 book ai didi

sql - 针对外键值的约束检查

转载 作者:行者123 更新时间:2023-12-04 04:55:18 26 4
gpt4 key购买 nike

我有这两张表

表:守卫

  • ID 整数
  • 名称为变量
  • 排名积分

表:小队

  • 小队编号
  • 领导
  • 小队名称

Leader 列指向 Guard 表中的 ID 列,我正在尝试创建一个约束来检查 code>Rank 列链接到作为领导者提供的守卫 id 是一个特定值(在本例中为 1)

这是可能的还是我必须使用触发器?

最佳答案

您需要添加一个CHECK 约束。我会将约束包装到一个函数中,因为您需要检查另一个表的值。

CREATE FUNCTION CheckLeaderRank
(@LeaderID INTEGER)
RETURNS INTEGER
AS
BEGIN
DECLARE @value INTEGER;
DECLARE @MinimumRank INTEGER = 3;

SET @value = CASE WHEN (SELECT RANK FROM Guards WITH(NOLOCK) WHERE Id = @LeaderID) >= @MinimumRank THEN 1 ELSE 0 END

RETURN @value
END

该函数将检查守卫的 Rank 是否足够高:确保将 @MinimumRank 设置为正确的值,或者更好的是,从另一个表中获取它.

现在将约束添加到您的 Squads 表中。

ALTER TABLE Squads
ADD CONSTRAINT chk_rank CHECK (dbo.CheckLeaderRank(i) = 1)

关于sql - 针对外键值的约束检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16841022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com