CREATE TABLE [dbo].[test] ( [id] [int] NOT NULL , [name] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[testerror] ( [id] [int] IDENTITY (1, 1) NOT NULL , [currentdate] [datetime] NULL , [hostname] [varchar] (128) COLLATE Chinese_PRC_CI_AS NULL , [loginame] [varchar] (128) COLLATE Chinese_PRC_CI_AS NULL , [message] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO ALTER TABLE [dbo].[test] WITH NOCHECK ADD CONSTRAINT [pk_test] PRIMARY KEY CLUSTERED ( [id] ) ON [PRIMARY] GO ALTER TABLE [dbo].[testerror] WITH NOCHECK ADD CONSTRAINT [pk_testerror] PRIMARY KEY CLUSTERED ( [id] ) ON [PRIMARY] GO CREATE TRIGGER tr_test ON dbo.test FOR UPDATE AS DECLARE @name VARCHAR(40),@name_d VARCHAR(40),@msg varchar(8000) SELECT @name = ISNULL(name,'') FROM INSERTED SELECT @name_d = ISNULL(name,'') FROM DELETED IF UPDATE(ID) OR UPDATE(name) IF (LTRIM(RTRIM(@name)) <> LTRIM(RTRIM(@name_d))) BEGIN rollback transaction BEGIN TRANSACTION t2 INSERT dbo.testerror (currentdate,hostname,loginame,message) SELECT getdate (),'11','11',@msg COMMIT TRANSACTION t2 select @msg = 'KK' RAISERROR( @msg,16,1) END GO INSERT test VALUES (1,1) GO --UPDATE test SET name = 'a' WHERE id = 1 --GO
[id] [int] NOT NULL ,
[name] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO CREATE TABLE [dbo].[testerror] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[currentdate] [datetime] NULL ,
[hostname] [varchar] (128) COLLATE Chinese_PRC_CI_AS NULL ,
[loginame] [varchar] (128) COLLATE Chinese_PRC_CI_AS NULL ,
[message] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO ALTER TABLE [dbo].[test] WITH NOCHECK ADD
CONSTRAINT [pk_test] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
GO ALTER TABLE [dbo].[testerror] WITH NOCHECK ADD
CONSTRAINT [pk_testerror] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
GO
CREATE TRIGGER tr_test ON dbo.test
FOR UPDATE
AS
DECLARE @name VARCHAR(40),@name_d VARCHAR(40),@msg varchar(8000) SELECT @name = ISNULL(name,'') FROM INSERTED
SELECT @name_d = ISNULL(name,'') FROM DELETED
IF UPDATE(ID) OR UPDATE(name) IF (LTRIM(RTRIM(@name)) <> LTRIM(RTRIM(@name_d)))
BEGIN
rollback transaction BEGIN TRANSACTION t2 INSERT dbo.testerror (currentdate,hostname,loginame,message) SELECT getdate (),'11','11',@msg COMMIT TRANSACTION t2 select @msg = 'KK' RAISERROR( @msg,16,1) END GO
INSERT test VALUES (1,1) GO
--UPDATE test SET name = 'a' WHERE id = 1
--GO
请高手指教