gpt4 book ai didi

sql - 检查约束中的子查询

转载 作者:行者123 更新时间:2023-12-03 08:47:05 27 4
gpt4 key购买 nike

我在 SQL-Server 设计了 table 2008 R2。

我在该表中有一个列,需要在插入数据时对照另一个表进行检查。

ALTER TABLE Table1
WITH CHECK ADD CONSTRAINT CK_Code
CHECK (MyField in (Select Field From Table2))

这会导致错误

Sub-queries are not allowed in this context. Only scalar expressions are allowed.



我看过这个关于 Check Constraint - Subqueries are not allowed in this context 的问题.

有没有办法在不使用触发器的情况下实现这一目标?

最佳答案

请注意,您真正想要的是外键约束。也就是说,要将“查询”放入检查中,您可以编写一个包含查询并输出标量值的函数,然后在检查约束中使用该函数。

CREATE FUNCTION myFunction (
@field DATATYPE(?)
)
RETURNS VARCHAR(5)
AS
BEGIN
IF EXISTS (SELECT* FROM Table2 WHERE MYFIELD = @field)
return 'True'
return 'False'
END

类似的东西。未测试。

然后你可以像这样将它添加到你的支票中
ALTER TABLE Table1
WITH CHECK ADD CONSTRAINT CK_Code
CHECK (myFunction(MYFIELD) = 'True')

关于sql - 检查约束中的子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13000698/

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