首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Instead插入触发器

Instead插入触发器
EN

Stack Overflow用户
提问于 2009-05-29 14:19:11
回答 2查看 683关注 0票数 1

谁能给我一个MSSQL的Instead of Insert触发器的骨架主体。我正在尝试测试采购订单列中的最大值(它是一个整数),在插入时,它获取最大值的增量,并将其作为采购订单ID插入。该列没有设置自动递增选项,所以我使用触发器绕过了它。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2009-05-29 15:06:21

下面是如何更改您的表以包含标识列的方法。

  1. 创建一个具有相同结构的新表,但在采购订单ID上有一个identity列。您可以使用“将表编写为”,只需更改采购订单Id的行,如下所示:

采购订单Id int标识主键,

  • 在新表上打开标识插入:

SET IDENTITY INSERT NewTable ON

  • Copy over the data:

INSERT (Columns) SELECT * FROM CurrentTable

  • Turn identity insert off: insert insert NewTable (Columns)SELECT*FROM identity insert off:

SET IDENTITY INSERT NewTable OFF

  • 重命名(或删除)旧表,使其不再使用:

EXEC 'BackupTable';

  • Move 'CurrentTable',在以下位置对新表执行‘BackupTable’;

  • Move操作:

EXEC sp_rename 'NewTable','CurrentTable';

现在您有了一个很好的identity列,这比讨厌的触发器要好得多。

票数 6
EN

Stack Overflow用户

发布于 2009-05-30 05:10:49

正如Andomar所描述的,在我看来,创建一个新的表来适当地支持您的特定需求将是理想的行动方案。

也就是说,如果您希望使用Instead of Insert触发器路线,那么下面的Microsoft参考提供了一个详细的示例。

http://msdn.microsoft.com/en-us/library/ms175089.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/928394

复制
相关文章
PL/SQL --> INSTEAD OF 触发器
INSTEAD OF 触发器常用于管理编写不可更新的视图,INSTEAD-OF触发器必须是行级的。
Leshami
2018/08/07
6120
sql server触发器实现插入时操作另一张表
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
逝兮诚
2019/10/30
1.4K0
mysql触发器(插入时更新关联表的某个字段)
数据库表结构 student表 dorm表 1、为student表建立触发器,当向学生表中插入宿舍id时,自动将dorm表该宿舍已住人数加1 create trigger triggerNumber before insert on student for each row begin if new.dorm_id is not null then update dorm set alreadyNumber=alreadyNumber+1 where id=new.dorm_id
别团等shy哥发育
2023/02/25
2.5K0
mysql触发器(插入时更新关联表的某个字段)
SQL Server触发器创建、删除、修改、查看示例步骤[通俗易懂]
一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约`束。
全栈程序员站长
2022/09/06
1.5K0
如何使用SQL语句创建触发器
触发器 是一种特殊类型的存储过程,它不同于我们前面介绍过的存储过程。存储过程可以通过语句直接调用,而 触发器主要是通过事件进行触发而被执行的. 例如当对某一表进行诸如UPDATE(修改)、INSERT(插入)、DELETE(删除)这些操作时,SQL Server 就会自动执行触发器所定义的SQL语句,从而确保对数据之间的相互关系,实时更新.
初阶牛
2023/10/14
3710
如何使用SQL语句创建触发器
sql server 触发器
触发器是一种特殊类型的存储过程。触发器可包含复杂的T-SQL语句。触发器不能通过名称被直接调用,也不允许设置参数。它是建立在触发事件上的。 触发器可以强制执行一定的业务规则,以保持数据完整性、检查数据有效性、实现数据库管理任务和一些附加功能。 触发器的分类: DML、 DDL、 登录触发器 创建触发器需要指定的选项:  1.触发器的名称。  2.在其上定义触发器的表。  3.触发器将何时激发。  4.激活触发器的数据修改语句。  5.执行触发操作的编程语句。 CREATE TRIGGER语句基本语法格式如下
欠扁的小篮子
2018/04/09
1.4K0
could only be replicated to 0 nodes, instead of 1
出现 这种异常是因为数据冲突造成的,可以把通过日志查看,解决办法:删掉tmp文件夹下生成的dfs文件,重新format一下,问题解决。
用户5166556
2019/04/16
5000
sql server 实验5.2 触发器的建立与使用
一、实验目的                                                     
week
2018/08/27
2.1K0
SQL sever 触发器
一: 触发器 是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新 记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。 二: SQL Server 为每个触发器都创建了两个专用表 :Inserted表和Deleted表。这两个表。 一 : 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新 记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。 二: SQL Server 为每个触发器都创建了两
赵腰静
2018/03/09
1.1K0
数电模电(三) 时序电路触发器 基本RS触发器 同步RS触发器 主从RS触发器 JK触发器 主从D触发器
本文原创首发CSDN,链接 https://blog.csdn.net/qq_41464123/article/details/90084796 ,作者博客https://blog.csdn.net/qq_41464123 ,转载请带上本段文字,尤其是脚本之家、码神岛等平台,谢谢配合。
Designer 小郑
2023/07/31
9730
数电模电(三) 时序电路触发器 基本RS触发器 同步RS触发器 主从RS触发器 JK触发器 主从D触发器
触发器
个人理解: 触发器就是由事件来触发某个操作,让表中的数据进行自动的添加、删除等操作
code-child
2023/05/30
5790
ORACLE触发器具体解释
触发器是很多关系数据库系统都提供的一项技术。在ORACLE系统里,触发器类似过程和函数,都有声明,运行和异常处理过程的PL/SQL块。
全栈程序员站长
2022/07/13
1.2K0
SQL Server触发器练习
    触发器的使用,其实在日常生活中还是很有帮助的。当你对一张表进行数据的怎删改查操作的时候,同时也相对另外一张甚至几张表进行同步修改操作,这个时候就会运用到触发器的概念。
静谧的小码农
2019/01/11
1.1K0
postgresql 触发器 简介(转)
– 把before for each row的触发器删掉, 再测试插入 : postgres=# drop trigger tg02 on t_ret; DROP TRIGGER postgres=# drop trigger tg2 on t_ret; DROP TRIGGER postgres=# insert into t_ret values(1,’digoal’,now()); NOTICE: 00000: tg01 LOCATION: exec_stmt_raise, pl_exec.c:2840 NOTICE: 00000: tg1 LOCATION: exec_stmt_raise, pl_exec.c:2840 NOTICE: 00000: tg03, after for each row 的触发器函数返回空, 不影响后续的触发器是否被调用. 因为只要表上面发生了真正的行操作, after for each row就会被触发, 除非when条件不满足. (这个后面会讲到) LOCATION: exec_stmt_raise, pl_exec.c:2840 NOTICE: 00000: tg3 LOCATION: exec_stmt_raise, pl_exec.c:2840 NOTICE: 00000: tg04 LOCATION: exec_stmt_raise, pl_exec.c:2840 NOTICE: 00000: tg4 LOCATION: exec_stmt_raise, pl_exec.c:2840 INSERT 0 1 – 有数据插入. 这也说明了before for each statement的返回值为空并不会影响数据库对行的操作. 只有before for each row的返回值会影响数据库对行的操作. postgres=# select * from t_ret ; id | info | crt_time —-+——–+—————————- 1 | digoal | 2013-03-10 16:50:39.551481 (1 row)
qubianzhong
2019/07/01
4K0
触发器
一:什么是触发器 触发器是一种响应特定事件的特殊类型的存储过程 insert update... drop alter...等事件都有相应的触发器 二:简单的触发器 下面一个例子是在插入或者修改记录的时候的一个触发器 其中inserted表是一个临时表 存储的是将要插入的信息 这个触发器的目的是检查将要插入的信息是否符合规定 (在product表里没有特殊的记录) 这个例子是check约束所不能解决的了的
liulun
2022/05/08
1.3K0
点击加载更多

相似问题

插入视图、INSTEAD OF触发器、标识、多个表?

41

instead of insert触发器中插入的表角色

11

Oracle instead of触发器

12

如何使用INSTEAD OF触发器在视图中插入数据?

154

INSTEAD OF DELETE触发器(Postgresql)

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文