2010-10-19 28 views
0

我需要更新記錄狀態(字段名稱IsActivate - 它保存記錄的狀態),但需要首先檢查數據是否在另一個表中使用(意思是表具有關係與另一個表)。如果我想要更新的數據在另一個表中使用,則不允許更新,否則應更新它。如何使用MS SQL 2005創建觸發器以實現此方法?或者,可以使用MS SQL 2005實現此方法SP?怎麼樣?如何在MS SQL 2005中創建觸發器

+0

你有什麼困難?你不知道創建觸發器的語法?你不知道如何編寫select語句?請更具體一些。你到目前爲止嘗試過什麼? – 2010-10-19 08:26:36

+0

我想他是問他是否可以在觸發器中測試另一張桌子。是的,你可以使用幾乎任何SQL。 – Rup 2010-10-19 08:28:11

+0

是的,這是我第一次創造TRIGGER,任何人都可以幫助我,我該如何實現我想做的事情? – user335160 2010-10-19 08:35:23

回答

2

如果我是你,我會避免使用觸發器。你可以在SP中輕鬆做到這一點。

您的更新記錄應該做這樣的事情SP: -

  • 我假設你要檢查的值傳遞的參數如更新SP,可能@value
  • 使用@valueSELECT statment在類似SELECT @result = count(1) FROM tableToCheck WHERE columnToCheck = @value
  • 如果@result = 0,繼續前進,火現有UPDATE聲明
  • 如果@resul噸<> 0,做任何你需要在你的業務場景做這樣也許更新的輸出參數,以表明您更新失敗

如果你想知道上述邏輯的語法,你可以看看如果您使用的是SQL Server,則使用MSDN;如果使用的是MySQL,則使用MySQL docs;如果使用的是Oracle,則使用Oracle help。如果任何其他引擎,只是谷歌「CREATE PROCEDURE <engineName>

然後,如果您有任何具體的語法問題,請隨時張貼他們在這裏與您的代碼,我們將很樂意幫助你與他們!

+0

嗨InSane,如果在觸發器中使用它,有什麼缺點,只是好奇...... :) – user335160 2010-10-19 08:41:12

+0

@ user335160 - 調試觸發器通常是一個很大的痛苦,因爲觸發器的固有特性...他們幾乎總是最後一個人看起來和大多數人忘記他們!對我而言,從長遠來看,可能是他們最大的缺點 – InSane 2010-10-19 08:44:28

+0

但是表現如何?它比SP慢得多?順便說一句,表格與5張表格有關係,所以我必須創建給定語句5次來檢查值是否存在? – user335160 2010-10-19 08:50:13