2012-08-01 212 views
0

我正在嘗試第一次創建觸發器。我想更新表(Opps)中的多個字段,一旦同一個表中的另一個字段被修改。我不確定觸發器是最好的方式去做,但我認爲它是。我想要更新的字段是(currStage)和(stageDate),第二個字段是原始字段(Stage)被修改的日期。那有意義嗎?創建觸發器

任何幫助將不勝感激,因爲我現在失去了。

+4

哪個RDBMS? SQL Server,MySQL,Oracle ......? – Yuck 2012-08-01 14:20:48

+0

通常,如果您想要了解對錶格的更改,最好登錄到第二個表格 - 或者您是否表示只會關注最近對錶格的更改(例如,忽略其他表格改變發生在5分鐘前) – 2012-08-01 14:24:25

+0

所以基本上它是一個自定義的Outlook窗體,與SQL數據庫交談。所以我創建了表單代碼,以便表單按照我希望的方式運行,如果表單處於打開狀態。如果他們使用批量更新工具,它會強制數據而不使用代碼。所以我想使用SQL觸發器來強制更改。我只關心一張桌子,但是所有更新都完成了。這是否回答你的問題? – KnowledgeSeeker 2012-08-01 14:27:58

回答

0

我認爲更好的方法是使用API​​,爲UPDATE,INSERT和DELETE創建存儲過程。並更新使用您的更新過程來更新其他表。過度使用觸發器不是一個好習慣。 API和觸發器方法的比較請查詢this

+0

我不能使用API​​,不幸的是,觸發器是唯一的解決方法。 – KnowledgeSeeker 2012-08-02 14:54:39

0

人們有時會有獨特的業務需求,聽起來就像是處於這種情況之一。
您可以使用AFTER INSERT觸發器使用新值更新字段。 當觸發器觸發你可以做一個UPDATE/SET/WHERE

CREATE TRIGGER update_stages_MyTable 
ON MyTable 
AFTER INSERT 
BEGIN 
    UPDATE MyTable 
    SET currStage = 'whatever value I want', stageDate = getdate() 
    WHERE Stage = 'the stage Ijust updated' 
END; 

讓我知道,如果這是有道理的,並滿足您的業務需求。