ms 觸發器 及 主鍵產生方式問題

來源:互聯網
上載者:User
ms 觸發器 及 主鍵產生方式問題項目需要 寫了個簡單的ms資料庫的
--判斷觸發器是否存在如果存在就刪除


IF EXISTS (SELECT name FROM sysobjects
WHERE name='TRICARRIGE' AND type='TR')
DROP TRIGGER TRICARRIGE
go

設定對什麼表建立觸法器,觸法時機:插入、更新、刪除



CREATE TRIGGER [TRICARRIGE]
   ON  [dbo].[T_table]
   AFTER INSERT,UPDATE,DELETE
AS
BEGIN

通過判斷 inserted 表 和 deleted 表來缺點是插入操作  下面語句的功能是把插入的資料備份到一暫存資料表裡面



--插入
IF EXISTS (SELECT 1 FROM inserted) AND NOT EXISTS (SELECT 1 FROM deleted)
  BEGIN
   INSERT INTO T_DEST_BACKUP
   SELECT i.ID,'T_DEST_TABLE','A',i.GID FROM    inserted i
  END

下面語句的功能是把更新的資料備份到一暫存資料表裡面 選項組



--更新
IF EXISTS (SELECT 1 FROM inserted) AND EXISTS (SELECT 1 FROM deleted)
  BEGIN
   INSERT INTO T_DEST_BACKUP
   SELECT i.ID,'T_DEST_TABLE',
    CASE WHEN i.ACTIVATE = 1
     THEN 'U'
     WHEN i.ACTIVATE = 0
     THEN 'D'
     ELSE ''
    END,i.GID
    FROM inserted i
  END

下面語句的功能是把刪除的資料備份到一暫存資料表裡面 選項組



--刪除
IF NOT EXISTS (SELECT 1 FROM inserted) AND EXISTS (SELECT 1 FROM deleted)
  BEGIN
   INSERT INTO T_DEST_BACKUP
   SELECT d.ID,'T_DEST_TABLE','D',d.GID FROM    deleted d
  END
SET NOCOUNT ON;
END
GO

在做觸法器的時候發現一個問題 ibatis的主鍵產生方式有好幾種
之前項目中的這種主鍵產生方式是不安全滴



  <insert id="inserUser" parameterClass="userBean" >
   <![CDATA[ insert into T_TABLE(NAME) values (#name:NVARCHAR#)]]>
    <selectKey resultClass="int" keyProperty="id" >   
    select @@IDENTITY as id   
    </selectKey>
  </insert>

之後更改成 下面 就解決了主鍵不一致的問題



<insert id="inserUser" parameterClass="userBean" >
<selectKey resultClass="int" keyProperty="id" >
<![CDATA[
insert into T_TABLE(NAME) values (#name:NVARCHAR#)
select SCOPE_IDENTITY() as id
]]>
</selectKey>
</insert>

看出其中的區別了沒

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.