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