zoukankan      html  css  js  c++  java
  • 数据库当中处触发器的应用

    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.更新触发器

       还没有完全理解,后续更新

      

  • 相关阅读:
    前端优化
    Git基础使用
    【高可用架构】用Nginx实现负载均衡(三)
    【高可用架构】借助Envoy工具发布项目到多台服务器(二)
    【高可用架构】开发机上部署Deploy项目(一)
    【Linux系列】Centos7安装Samba并将工作区挂载到win(八)
    【Linux系列】Centos 7部署Laravel项目(七)
    【Linux系列】Centos 7安装 Redis(六)
    【Linux系列】Centos 7安装 Mysql8.0(五)
    gitlab服务器搭建
  • 原文地址:https://www.cnblogs.com/hechunming/p/3075725.html
Copyright © 2011-2022 走看看