有A主表,B表为临时表两个表,两个表的结构完全相同,主键分别为ch_billno,ch_tableno,ssid,我想做一个触发器,当A表插入主键数据时,把临时表中存在相同主键的数据删除,插入数据的时候会用到sqlbulkcopy方式插入,只会引发一次insert操作。
1条回答 默认 最新
- 吉普赛的歌 2015-01-27 12:19关注
亲测可用, 楼主速速采纳吧, 呵呵
--1. 创建测试表 A,B 及测试数据 IF OBJECT_ID('dbo.A') IS NOT nuLL BEGIN DROP TABLE dbo.A END GO CREATE TABLE dbo.A ( id INT PRIMARY KEY, n NVARCHAR(10) ) GO IF OBJECT_ID('dbo.B') IS NOT nuLL BEGIN DROP TABLE dbo.B END GO CREATE TABLE dbo.B ( id INT, n NVARCHAR(10) ) GO --SET NOCOUNT ON INSERT INTO dbo.B (id,n) VALUES(1, N'小明') INSERT INTO dbo.B (id,n) VALUES(2, N'小华') SELECT * FROM A SELECT * FROM B /* --A表 id n ----------- ---------- --B表 id n ----------- ---------- 1 小明 2 小华 */ --2. 创建触发器 IF EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[Trig_A_I]')) DROP TRIGGER [dbo].[Trig_A_I] GO -- ============================================= -- Author: yenange -- Create date: 2015-01-27 -- Description: 当A表插入记录时,删除B表中主键相同的记录 -- ============================================= CREATE TRIGGER dbo.Trig_A_I ON dbo.A FOR INSERT AS BEGIN SET NOCOUNT ON; DELETE FROM dbo.B WHERE b.id IN ( SELECT id FROM inserted ) END GO --3. 测试:往A表中插入 id =1 的记录, -- 期待结果: -- A 表有id=1 的记录, -- B 表原来有 id =1,2 两条记录变为只有id=2 一条记录 INSERT INTO dbo.A (id,n) VALUES(1, N'小明') SELECT * FROM A SELECT * FROM B /* --A表 id n ----------- ---------- 1 小明 --B表 id n ----------- ---------- 2 小华 */
解决 无用评论 打赏 举报
悬赏问题
- ¥15 Python爬取指定微博话题下的内容,保存为txt
- ¥15 vue2登录调用后端接口如何实现
- ¥65 永磁型步进电机PID算法
- ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
- ¥88 找成都本地经验丰富懂小程序开发的技术大咖
- ¥15 如何处理复杂数据表格的除法运算
- ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
- ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
- ¥15 latex怎么处理论文引理引用参考文献
- ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?