实验触发器时用到的两个表的SQL脚本如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Person]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Person]
GO
CREATE TABLE [dbo].[Person] (
[PersonID] [int] IDENTITY (1, 1) NOT NULL ,
[Name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Sex] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Nation] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Birthday] [smalldatetime] NULL ,
[IDCard] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Unit] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Department] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Job] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[OfficialRank] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Politics] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Marriage] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[EduLevel] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Speciality] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[School] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Native] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Addr] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Tel] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Mobile] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[EMail] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Memo] [text] COLLATE Chinese_PRC_CI_AS NULL ,
[Area] [text] COLLATE Chinese_PRC_CI_AS NULL ,
[ImageData] [image] NULL ,
[ImageSize] [int] NULL ,
[Role] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PersonCheck]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[PersonCheck]
GO
CREATE TABLE [dbo].[PersonCheck] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[PersonID] [int] NULL ,
[CheckName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[CheckClass] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[CheckMode] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[CheckDate] [datetime] NULL ,
[CheckRemark] [text] COLLATE Chinese_PRC_CI_AS NULL ,
[CheckResult] [text] COLLATE Chinese_PRC_CI_AS NULL ,
[Memo] [text] COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
在Person表上建的触发器如下:
CREATE TRIGGER [DeleteCheck] ON [dbo].[Person]
FOR INSERT, UPDATE, DELETE
AS
declare @PersonID int;
select @PersonID=PersonID from deleted;
delete from PersonCheck where PersonID=@PersonID;