數據庫當中處觸發器的應用


1.先創建一個test 和一個test2  兩個表

USE [WZDb]
GO

/****** Object:  Table [dbo].[test]    Script Date: 05/13/2013 14:21:21 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[test](
 [id] [int] IDENTITY(1,1) NOT NULL,
 [content] [varchar](500) NOT NULL,
 CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED
(
 [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

 

USE [WZDb]
GO

/****** Object:  Table [dbo].[test2]    Script Date: 05/13/2013 14:21:45 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[test2](
 [id] [uniqueidentifier] NOT NULL,
 [name] [varchar](50) NOT NULL,
 CONSTRAINT [PK_test2] PRIMARY KEY CLUSTERED
(
 [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[test2] ADD  CONSTRAINT [DF_test2_id]  DEFAULT (newid()) FOR [id]
GO

 2.先看一下添加的觸發器。當給test2 添加一條數據 相對應的給test1 也添加一條

    USE [WZDb]
GO
/****** Object:  Trigger [dbo].[trig_test2]    Script Date: 05/13/2013 14:22:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--=====給Test2添加數據的時候也改test1添加====
ALTER trigger  [dbo].[trig_test2]
    on [dbo].[test2]   for  insert
      as
         declare  @name  varchar(50)
        -- declare  @name2  varchar(50)
         select  @name=name  from inserted
        
          INSERT INTO [WZDb].[dbo].[test]
           ([content])
     VALUES
           (@name)
           print '開始輸出'
           print @name
           print '輸出完畢'

 

2.刪除數據的觸發器

  

USE [WZDb]
GO
/****** Object:  Trigger [dbo].[trrig_del]    Script Date: 05/13/2013 14:23:08 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[trrig_del]
  on  [dbo].[test]  for delete
AS
   declare  @name varchar(50)
   select @name=content from  deleted
   if  exists(select * from test2  where name=@name)
   begin
    delete  from   test2  where  name=@name
     print 'ddd'
    end

3.更新觸發器

   還沒有完全理解,后續更新

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM