如何在使用 SQL Server 插入/更新之前验证数据?

2023-12-06

我有一个这样定义的表

CREATE TABLE [dbo].[ObjectRelationClauses]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY, 
    [RelationId] INT NOT NULL, 
    [OperatorType] NVARCHAR(3) NOT NULL, 
    [LocalPropertyId] INT NOT NULL, 
    [ForeignPropertyId] INT NULL, 
    [ForeignValue] VARCHAR(255) NULL, 
    [ParentClauseId] INT NULL
)

如果两者的值都相同,我需要能够提出错误ForeignPropertyId and ForeignValue列都null,否则我想执行该操作。

这是我尝试过的

CREATE TRIGGER [dbo].[Trigger_ObjectRelationClauses]
    ON [dbo].[ObjectRelationClauses]
    FOR INSERT, UPDATE
    AS
    BEGIN
        SET NoCount ON
        IF(ForeignPropertyId IS NULL AND ForeignValue IS NULL)
        BEGIN
           RAISERROR('Either ForeignPropertyId or ForeignValue must be provided to perform this action!')
        END

    END

但这给了我一个语法错误。也许,我正在使用的方式RAISERROR是错的。

如何正确添加触发器来验证数据INSERT and UPDATE?


这看起来像是检查约束的工作,而不是触发器:

ALTER TABLE [dbo].[ObjectRelationClauses]
ADD CONSTRAINT foreign_chk CHECK 
([ForeignPropertyId] IS NOT NULL OR [ForeignValue] IS NOT NULL);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在使用 SQL Server 插入/更新之前验证数据? 的相关文章

  • 在 plsql 中立即执行

    如何从这段代码中得到结果 EXECUTE IMMEDIATE SELECT FROM table name through for loop 通常的方法看起来像这样 for items in select from this table l
  • 在SQL Server中仅获取浮点数的小数部分[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在 SQL Server 2008
  • 仅当变量不为空时 SQL 添加过滤器

    您好 我有疑问如下 SELECT route id ROUTE ID FROM route master NOLOCK WHERE route ou 2 AND route query l s query AND lang id 1 这里
  • (SQL) 识别字段中字符串格式多次出现的位置

    我需要将叙述字段 自由文本 拆分为多行 目前的格式如下 Case Reference Narrative XXXX XX 123456 Endless Text up to 50k characters 在作为文本的叙述字段中 各个条目 当
  • ASP.NET 网站上的 XSS 攻击 [已关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我遇到了很大的麻烦 请帮忙 我的网站
  • 具有 LINQ 支持的最完整的 ORM?

    我正在寻找一个提供完整或接近完整的 LINQ 支持的 ORM LINQ 到 SQL 支持 LINQ 内部的所有内容 Contains Math Log 等 在不创建新数据上下文的情况下无法预先加载关系属性 ADO NET 实体框架 糟糕的
  • MySQL 触发器和 SUM()

    我有两张桌子 学生桌和家庭桌 在学生中 我有列 st venue 和total venue 家里我有收入 Total Revenue 是学生 st 收入与家庭收入之和 其中 family id student student id stud
  • 从数据库配置中的连接字符串中删除 SSIS 密码

    我有一个 SSIS 包 它使用 SQL 服务器中的 SSIS 配置表来检索 OLE DB 连接管理器的连接字符串属性 问题是我还需要相同的连接字符串来调用使用实体框架的程序集 我尝试访问连接管理器连接字符串属性 但 SSIS 总是删除密码
  • 从存储过程中的动态 SQL 获取结果

    我正在编写一个存储过程 需要在过程中动态构造 SQL 语句以引用传入的表名称 我需要让这个 SQL 语句返回一个结果 然后我可以在整个过程的其余部分中使用该结果 我尝试过使用临时表和所有内容 但我不断收到一条消息 提示我需要声明变量等 例如
  • 如何将自定义类型数组传递给 Postgres 函数

    我有一个自定义类型 CREATE TYPE mytype as id uuid amount numeric 13 4 我想将它传递给具有以下签名的函数 CREATE FUNCTION myschema myfunction id uuid
  • SQL Server 查询结果集的大小

    SQL Server 中是否有确定结果集中 Mgmt Studio 查询中返回的数据大小 以 MEGS 为单位 您可以打开客户端统计信息 查询菜单 包括客户端统计信息 它给出执行查询时从服务器返回的字节数
  • SQL Server 使用通配符加入并在第一个匹配处停止

    IF OBJECT ID tempdb TABLE1 IS NOT NULL DROP TABLE TABLE1 IF OBJECT ID tempdb TABLE2 IS NOT NULL DROP TABLE TABLE2 CREATE
  • SQL Server 2008:如何使用 powershell 获取“消息”选项卡(在 Management Studio 中)输出

    我在用invoke sqlcmd管理我的数据库 它工作得很好 我将 Management Studio 中 结果 选项卡的输出保存到日志文件中 当我做一个BACKUP DATABASE 输出是在 消息 选项卡上完成的 我想将其保存在日志文件
  • SQL Server 相当于 MySQL 的 USING

    在 MySQL 中 当您连接不同表中具有相同名称的列时 可以在连接中使用关键字 USING 例如 这些查询产生相同的结果 SELECT FROM user INNER JOIN perm USING uid SELECT FROM user
  • 在 Postgres 中的数组字段上应用聚合函数?

    是否可以对整数 字段 或其他数字数组 中的所有值应用聚合 如 avg stddev CREATE TABLE widget measurement integer insert into widget measurement values
  • 更新plpgsql中触发器函数中的多列

    给出以下架构 create table account type a id SERIAL UNIQUE PRIMARY KEY some column VARCHAR create table account type b id SERIA
  • Yii 查询时对相关模型的限制

    我遇到了极限问题 我正在使用的代码如下 model PostCategory model record model gt with array posts gt array order gt posts createTime DESC li
  • SSRS将参数传递给子报表

    我有 2 个表 它们都有 countyID 列 我有一个主报告 它根据如下查询显示报告 SELECT countyID name address state FROM TableA 我在 TableA 上设置了一个参数 您可以在其中选择名称
  • 外键引用多个表

    我有4张桌子 A ida name B ida B specific stuff C ida C specific stuff D ida D specific stuff 我希望另一个表 E 可以仅引用 B 或 C 而不是 D 我可以在其
  • 累计非重复计数

    我正在查询每天获取 uid 的累计不同计数 示例 假设有 2 个 uid 100 200 出现在日期 2016 11 01 并且它们也在第二天出现 新的 uid 300 100 200 300 出现在 2016 11 02 此时我希望商店累

随机推荐

  • 具有索引访问的哈希集

    我需要一个数据结构 允许我向其中添加 项目 不允许重复 通过索引访问集合 我正在考虑哈希集 但是HashSet没有索引 满足上述需求的数据结构是什么 源自的集合怎么样KeyedCollection 这表示项目的集合 其中每个键都源自项目本身
  • Flutter文本省略号删除最后一个单词

    我想使用 TextOverflow ellipsis 但它最后删除 for 使其成为省略号 并且看起来非常难看 我怎样才能做到不删除任何单词 例如 当我使用 fade 和 softwrap false 进行制作时 它可以按我想要的方式工作
  • 如何使用cloudbuild.yaml在GCP上配置redis?

    我正在尝试在 GCP 上设置 CI CD 管道 我有一个使用 Redis 作为数据库的 NodeJS 应用程序 我正在尝试在 GCP 上配置 redis 我已经尝试了下面的配置 但是一旦执行了redis步骤 它就会一直等待redis连接并且
  • R中基于行名合并数据框

    如何合并两个数据框的列 其中包含一组不同的列 但some具有相同名称的行 两个数据框中都没有出现的行的字段应该用零填充 gt d a b c d e f g h i j 1 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9
  • Android - 构造函数 ActionBarDrawerToggle 未定义

    我在 oncreate 函数中使用此代码通过按应用程序图标打开导航抽屉 ActionBarDrawerToggle mDrawerToggle new ActionBarDrawerToggle this host Activity Dra
  • Spring Data Neo4j -repository.save 和 @Indexed(unique=true)

    今天我尝试了Spring Data Neo4j 终于可以使用了somehow 我在用着 春季4 0 2 Spring数据Neo4j 3 0 0 查询DSL 3 3 1 Neo4j 2 0 1 这是我的配置 Configuration Ena
  • Joomla 和 MySQL

    Joomla 上是否有关于在 PHP 中通过 MySQL 进行数据库查询的具体文档 我真正在寻找什么 Joomla 是否实现了自己的数据库包装器 如果没有 建议使用指定的配置参数创建一个 Joomla 是否能够参数化其查询以防止 SQL 注
  • 部分唤醒锁不起作用

    我的应用程序有activities和背景service必须运行24 7 我的应用程序必须通过以下方式与服务器通信Wi Fi发送和接收信息 Problem 每当服务器发送任何警报时 我的应用程序都应该接收并弹出该应用程序 无论它是在前台还是后
  • 在 ~/.bashrc 中设置的变量并在 shell 脚本中访问它们

    我在 bashrc 的最顶部有这个 before非交互式 shell 的返回 FOO BAR export FOO echo HELLO WORLD If not running interactively don t do anythin
  • List 上的 BinarySearch 似乎返回奇怪的结果

    我对 C 很陌生 我创建了一个 List 对象 然后对特定项目执行 BinarySearch 但搜索结果似乎很奇怪 这是代码 class Element public int x public Element int val x val c
  • 如何在 jQuery 悬停菜单中保持子菜单打开?

    我上周刚刚开始使用 jQuery 进行编码 需要一些帮助来弄清楚如何使菜单正常工作 我有 3 个选项卡 每个选项卡都有自己的菜单 当显示页面时 会自动显示菜单和子菜单 显示后 用户可以将鼠标悬停在选项卡上以查看其他子菜单 当他们停止悬停时
  • 为什么 Mule App xml 的架构验证对于 Java 组件绑定失败?

    我在我的 mule 应用程序中配置了以下组件绑定
  • 我看不到与信标相关的附近通知

    我的设备昨天更新了谷歌服务应用程序 我已经测试过谷歌附近的通知在 Android 上有两个信标 一个 iBeacon 和一个 Eddystone UID 这些信标处于活动状态 并且已在平台中正确注册 我看到它们已在 Android Beac
  • Hibernate 5 中 org.hibernate.Transactions.isActive() 的替换

    我正在从 hibernate 4 2 17 迁移到 5 0 7 到目前为止效果很好 但该方法似乎isActive已弃用 我只是不能再使用它了 这是我的代码 public void starteTransaktion try getMySes
  • 使用形状笛卡尔和 matplotlib 绘制断开连接的实体

    我需要绘制一个断开的圆圈列表 这些圆圈是我为其他目的而创建的 我试图完全按照中的示例进行操作http toblerity org shapely manual html cascading unions显示 参见code 但只有当圆圈重叠并
  • 是否可以在 Common Lisp 中定义递归类型?

    递归类型是一种具有基数和自身递归情况的类型 我希望它实现 类型化列表 即其conses仅允许相同元素类型或nil的列表 我尝试了以下定义 deftype list of a or null cons a list of a 然而 这表明由于
  • 在 Visual Basic 中连接控件,控制控件

    我正在使用 Visual Basic Visual Studio 2010 创建动态创建的控件 本质上 我正在做的是创建一个标签 一个文本框 一个标签 将充当秒表 和一个按钮 用于控制所述秒表 每组控件将按如下方式排列 并命名 LABEL
  • 带有圆角和阴影 Kivy 的图像

    How can I do something like this with Kivy 使用按钮的背景 正常 背景 向下 and border为了达成这个 让我们将您提供的两张图片命名为正常 png and down png 详细信息请参考下
  • Cordova 插件 - 添加第三方 sdk

    我正在尝试为以下 sdk 创建插件 https ktplayhelp zendesk com hc en us articles 221071888 Android 在设置项目配置点中 它告诉我们通过在 Android studio 中导入
  • 如何在使用 SQL Server 插入/更新之前验证数据?

    我有一个这样定义的表 CREATE TABLE dbo ObjectRelationClauses Id INT NOT NULL PRIMARY KEY IDENTITY RelationId INT NOT NULL OperatorT