亲爱的我都遇到了触发器的问题。插入更新删除触发器
我在做这件事,现在只适用于插入。如果你有时间,我认为我很亲密,请帮助我。我试图通过触发器将所有插入,更新和删除存储到表customers_changelog中。代码有问题,我不能删除或更新客户,我只能插入新的客户。请帮助我,我已经花了很多时间在这个,只是不能得到这个工作! :)
create table customers (
customerid int identity primary key,
name varchar(100) not null,
address varchar(100)
)
go
create table customers_changelog (
customerid int,
name varchar(100) not null,
address varchar(100),
change_user varchar(32),
change_time datetime,
change_action char(1) default 'I',
check (change_action = 'I' or change_action = 'D')
)
go
CREATE TRIGGER log_changes
ON customers
AFTER INSERT, UPDATE, DELETE
AS
BEGIN
SET NOCOUNT ON;
--
-- Check if this is an INSERT, UPDATE or DELETE Action.
--
DECLARE @customerid1 as int;
DEClARE @name1 as varchar(32);
DECLARE @address1 as varchar(100);
DECLARE @change_action1 as char(1);
DECLARE @change_time1 as datetime;
DECLARE @change_user1 as varchar(32);
select @customerid1 = c.customerid, @name1 = c.name, @address1 = c.address
from customers c, inserted i
where c.customerid = i.customerid
SET @change_time1 = CURRENT_TIMESTAMP;
SET @change_user1 = CURRENT_USER;
INSERT INTO customers_changelog(customerid,name,address,change_action,change_time,change_user)
VALUES(@customerid1,@name1,@address1,'I',@change_time1,@change_user1)
IF EXISTS(SELECT * FROM DELETED)
BEGIN
IF EXISTS(SELECT * FROM INSERTED)
INSERT INTO customers_changelog VALUES(@customerid1,@name1,@address1,'U',@change_time1,@change_user1)
ELSE
INSERT INTO customers_changelog VALUES(@customerid1,@name1,@address1,'D',@change_time1,@change_user1)
END
ELSE
IF NOT EXISTS(SELECT * FROM INSERTED) RETURN;
END
*** *** SQL只是*结构化查询语言* - 许多数据库系统中使用的语言,但没有AA数据库产品...触发器是**高度**供应商特定的 - 所以我们真的需要知道你正在使用的数据库系统**(和哪个版本)...... –