当前位置: 首页 > 面试题库 >

T-SQL和事务流-从头到尾

云长恨
2023-03-14
问题内容

假设我有带有列的表 TabA

  • col1-主键(但不包括身份)

  • col2-外键

  • col3-具有唯一约束

  • col4-具有检查约束

  • col5-具有NOT NULL约束

此外, TabA 具有2个触发器:

  • INSTEAD OF INSERT-这个取消插入到 TabA中 (当然),但是在它自己的代码中,将新行插入 TabA中 。保证此新行中所有列的值正确

  • 插入后-此仅打印字符串

现在,我准备将新行插入 TabA (INSERT INTO TabA VALUES(…))。显然,我们必须期待一些事件:

  1. 必须检查col1的值的唯一性和NOT NULL(主键)

  2. 必须检查col2的值是否与父母表格(外键)相符

  3. 必须检查col3的值是否唯一

  4. 必须对照检查约束检查col4的值

  5. 必须为col5的值检查NOT NULL

  6. 必须执行INSTEAD OF触发器

  7. 必须执行AFTER触发器

我想要的是重新排序此列表(1-7),以使数字1出现在首先发生的事件上,2 =发生在第二发生的事件上,…,以及发生在最后一个事件上的7。

另外,如果事件X产生错误(例如,col5 = NULL)-这是否意味着事件X + 1,X + 2 .. 不会 发生?

谢谢您的帮助!


问题答案:

通过按照触发器中的print语句所述设置html" target="_blank">测试表并仅尝试插入无效值,就可以轻松地进行测试。这样做给了我

  1. 代替触发
  2. 检查PK的NULL
  3. 检查第5列的NULL
  4. 检查PK约束的唯一性
  5. 检查唯一约束的唯一性
  6. 检查第4列的检查约束
  7. 检查FK约束
  8. 触发后触发

据我所知,保证1,7和8的顺序。其余都是任意的。任何错误将停止后续步骤。



 类似资料:
  • 主要内容:COMMIT命令,ROLLBACK命令,SAVEPOINT命令,SET TRANSACTION命令事务是与数据库相反执行的工作单元,从数据库读取或写入数据库的任何事务。事务是对数据库的一项或多项更改的传播。 例如,如果我们创建记录、更新或删除表的历史记录,那么也应该创建事务。控制数据完整性的操作是必不可少的,它用于处理数据库的错误。我们向组中添加一些 SQL 查询并执行事务部分。 事务属性: 事务有四个属性,称为 ACID 属性 - 原子性 - 确保与工作单元的所有操作都成功完成; 否

  • 主要内容:语法Transact SQL 中的 Pivot 和 Unpivot 是关系运算符。可以用于将一张表转换成另一张表,以实现对桌子的清晰视图。 Pivot 运算符将行数据转换为列数据。 Unpivot 关系运算符的工作方式与 Pivot 运算符相反。它将基于列的数据转换为基于行的数据,将基于行的数据转换为基于列的数据。 语法 1. Pivot: 2. UnPivot: 示例1 在这里,我们创建的表名为“t

  • 我希望有一个Spring云流侦听器处理有关其中发送的所有消息的完整事务。或者,即使之后有异常,也会提交函数中使用StreamBridge手动发送的所有消息。 这是我的lib版本: 我的Spring云流形态: 我的测试java代码: 要运行的测试类: 我还添加了TransactionManager: 在最后的这个示例中,我的兔子队列中有: 或者我应该只有两条消息test.other.request.

  • 问题内容: 我有两个单独的表TV和Receiver,它们使用FOR XML PATH命令来构建XML。我的问题是,我想将TV XML Build的输出与Receiver XML Build的输出结合起来以创建一个XML输出。 因此,我会有类似的内容(允许我在FilterData根目录中将电视标签和接收器标签分开): 问题是当我构建查询以输出此XML时 和 我不确定如何将它们组合成示例: 问题答案:

  • 主要内容:事务的属性,事务执行流程在数据库中,我们将一条 SQL 语句称为一次基本的操作。将若干条 SQL 语句“打包”在一起,共同执行一个完整的任务,这就是事务。 事务( Transaction)由一次或者多次基本操作构成,或者说,事务由一条或者多条 SQL 语句构成。 事务有一个最显著的特征,就是它包含的所有 SQL 语句作为一个整体向数据库提交,只有所有的 SQL 语句都执行完成,整个事务才算成功,一旦某个 SQL 语句执行

  • 主要内容:开始和结束事务,提交事务,回滚事务,自动事务控制在本章中,我们将讨论和学习PL/SQL中的事务。 数据库事务是由一个或多个相关SQL语句组成的原子工作单元。它被称为原子操作,因为构成事务的SQL语句带来的数据库修改可以共同提交,即永久化到数据库或从数据库回滚(撤销)。 成功执行的SQL语句和提交的事务不一样。即使成功执行SQL语句,除非提交包含语句的事务,否则可以回滚该语句,并且可以撤消语句所做的所有更改。 开始和结束事务 事务有开始和结束。当