首页 > 数据库 > mysql教程 > 如何在 SQL Server 检查约束中使用子查询?

如何在 SQL Server 检查约束中使用子查询?

Patricia Arquette
发布: 2025-01-04 18:31:40
原创
303 人浏览过

How Can I Use Subqueries in SQL Server Check Constraints?

在检查约束中使用子查询

在 SQL Server 2008 R2 中,尝试使用子查询定义检查约束,例如:

ALTER TABLE Table1
WITH CHECK ADD CONSTRAINT CK_Code
CHECK (MyField in (Select Field From Table2))
登录后复制

导致错误,表明此中不允许子查询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')
登录后复制

通过根据特定字符串(例如“True”)检查函数返回的标量值,可以强制执行所需的验证,而无需需要直接在检查约束中使用子查询。

以上是如何在 SQL Server 检查约束中使用子查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板