一个简单的数据库trigger报错 那么麻烦。直接写一个SELECT * INTO XXX FROM INSTERed 不就成啦!在DELETED里写一个DELETE FROM XX WHERE ID=DELETE.ID 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 INSERT INTO CustomerAudit (caCustomerID, caTransType, caUser, caAudDateTime) VALUES (@customerID, @caTransType, [USER], --user加上[]试一下。 GETDATE()); CREATE TABLE Customer ( customerID INT IDENTITY(1000000,1), customerFirstName VARCHAR(15), customerLastName VARCHAR(15) NOT NULL, customerHouseNum CHAR(5), customerStreet CHAR(15), customerCity CHAR(15), customerState CHAR(15), customerRegisterDate DATETIME, customerZipCode CHAR(6), CONSTRAINT CustomerPK PRIMARY KEY (customerID), ); CREATE TABLE CustomerAudit ( caTransID INT IDENTITY (1,1), caCustomerID INT, caTransType CHAR(2), caUser VARCHAR(10), caAudDateTime DATETIME DEFAULT GETDATE(), CONSTRAINT CustomerAuditPK PRIMARY KEY (caTransID), ); create TRIGGER CustomerTrigger ON Customer FOR INSERT, DELETE AS DECLARE @customerID INT, @caTransType CHAR SET @caTransType = 'I'; SELECT @customerID = customerID FROM INSERTED; IF @customerID IS NULL BEGIN SET @caTransType = 'D' SELECT @customerID = customerID FROM DELETED; END ELSE BEGIN SELECT @customerID = customerID FROM INSERTED; END INSERT INTO CustomerAudit (caCustomerID, caTransType, caUser, caAudDateTime) VALUES (@customerID, @caTransType, USER, GETDATE()); goinsert Customer select 'John','chen','001','001','CZ','CC','2005-01-01','000001' select * from CustomerAudit/*caTransID caCustomerID caTransType caUser caAudDateTime----------- ------------ ----------- ---------- -----------------------1 1000000 I dbo 2009-05-02 14:54:44.730(1 行受影响)*/delete Customerselect * from CustomerAudit/*caTransID caCustomerID caTransType caUser caAudDateTime----------- ------------ ----------- ---------- -----------------------1 1000000 I dbo 2009-05-02 14:54:44.7302 1000000 D dbo 2009-05-02 14:56:05.043(2 行受影响)*/我测试一下,没报错。 一触发器写法 一个SQL server2000的小问题 救急啊~!怎样比较两个日期之间有多少天 像这样的问题有没有更好的解决办法 SQL语句提示SELECT INTO 必须是包含 UNION 运算符的 SQL 语句中的第一个查询 请高手帮我看一下这个储存过程有什么问题 在线等 HSQL查询求解 ACCESS数据库转SQL2005 SQL 存储过程 错误 在自定义函数中IF Case 等控制流语言如何应用? 这种情况建立临时表能够解决吗? 连接远程MSSQL服务器的怪事~
caTransType,
caUser,
caAudDateTime)
VALUES (@customerID,
@caTransType,
[USER], --user加上[]试一下。
GETDATE());
(
customerID INT IDENTITY(1000000,1),
customerFirstName VARCHAR(15),
customerLastName VARCHAR(15) NOT NULL,
customerHouseNum CHAR(5),
customerStreet CHAR(15),
customerCity CHAR(15),
customerState CHAR(15),
customerRegisterDate DATETIME,
customerZipCode CHAR(6),
CONSTRAINT CustomerPK PRIMARY KEY (customerID),
); CREATE TABLE CustomerAudit
(
caTransID INT IDENTITY (1,1),
caCustomerID INT,
caTransType CHAR(2),
caUser VARCHAR(10),
caAudDateTime DATETIME DEFAULT GETDATE(),
CONSTRAINT CustomerAuditPK PRIMARY KEY (caTransID),
); create TRIGGER CustomerTrigger ON Customer
FOR INSERT, DELETE
AS
DECLARE
@customerID INT,
@caTransType CHAR
SET @caTransType = 'I';
SELECT @customerID = customerID
FROM INSERTED; IF @customerID IS NULL
BEGIN
SET @caTransType = 'D'
SELECT @customerID = customerID FROM DELETED;
END
ELSE
BEGIN
SELECT @customerID = customerID FROM INSERTED;
END
INSERT INTO CustomerAudit
(caCustomerID,
caTransType,
caUser,
caAudDateTime)
VALUES (@customerID,
@caTransType,
USER,
GETDATE());
goinsert Customer
select 'John','chen','001','001','CZ','CC','2005-01-01','000001'
select * from CustomerAudit
/*
caTransID caCustomerID caTransType caUser caAudDateTime
----------- ------------ ----------- ---------- -----------------------
1 1000000 I dbo 2009-05-02 14:54:44.730(1 行受影响)
*/delete Customerselect * from CustomerAudit
/*
caTransID caCustomerID caTransType caUser caAudDateTime
----------- ------------ ----------- ---------- -----------------------
1 1000000 I dbo 2009-05-02 14:54:44.730
2 1000000 D dbo 2009-05-02 14:56:05.043(2 行受影响)
*/我测试一下,没报错。