日期:2014-05-18 浏览次数:20843 次
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 行受影响)
*/