日期:2014-05-18 浏览次数:20734 次
if OBJECT_ID('tb')is not null drop table tb go create table tb (ID varchar(2),商品 char(20),条码 char(20),金额 int,新上架 char(2)) insert into tb values ('1','洗发水','0124578104','20','') CREATE TRIGGER [tb-update] ON [dbo].[tb] FOR INSERT AS DECLARE @ID VARCHAR(2) BEGIN SELECT @ID=ID FROM INSERTED -- 当商品在tb表中不存在时,更新 新上架 字段 -- 行级触发器,只更新 新增行数据 IF not EXISTS (SELECT A.商品 FROM INSERTED A INNER JOIN tb B ON A.商品=B.商品) UPDATE tb SET 新上架='是' FROM tb WHERE @ID=ID END COMMIT
create table tb (ID varchar(2),商品 char(20),条码 char(20),金额 int,新上架 char(2)) go CREATE TRIGGER [tb-update] ON [dbo].[tb] instead of INSERT AS begin DECLARE @ID VARCHAR(2) BEGIN SELECT @ID=ID FROM INSERTED -- 当商品在tb表中不存在时,更新 新上架 字段 -- 行级触发器,只更新 新增行数据 IF not EXISTS (SELECT 1 FROM INSERTED A INNER JOIN tb B ON A.商品=B.商品) insert into tb select ID,商品,条码,金额,'是' FROM INSERTED WHERE @ID=ID else insert into tb select * from inserted END end go --test select * from tb insert into tb values ('1','洗发水','0124578104','20','') --select select * from tb drop TRIGGER [tb-update] drop table tb /**************************** ID 商品 条码 金额 新上架 ---- -------------------- -------------------- ----------- ---- 1 洗发水 0124578104 20 是 (1 行受影响) ****************************/
------解决方案--------------------
if OBJECT_ID('tb')is not null drop table tb go create table tb (ID varchar(2),商品 char(20),条码 char(20),金额 int,新上架 char(2)) if OBJECT_ID('[tb-update]','TR')is not null drop trigger [tb-update] go CREATE TRIGGER [tb-update] ON [dbo].[tb] FOR INSERT AS DECLARE @ID VARCHAR(2) BEGIN SELECT @ID=ID FROM INSERTED -- 当商品在tb表中不存在时,更新 新上架 字段 -- 行级触发器,只更新 新增行数据 IF not EXISTS (SELECT A.商品 FROM INSERTED A INNER JOIN tb B ON A.商品=B.商品 and a.id!=b.id) /*加上id*/ UPDATE tb SET 新上架='是' FROM tb WHERE @ID=ID END insert into tb values ('1','洗发水','0124578104','20','') select * from tb /* ID 商品 条码 金额 新上架 ---- -------------------- -------------------- ----------- ---- 1 洗发水 0124578104 20 是 (1 行受影响) */