-1
觸發器我使用觸發器,現在我面臨的一些問題是第一次,如何編寫一個基於行的更新
我有3個表,InvoiceHead,InvoiceDetails,InventoryMaster。
當我更新InvoiceHead的「狀態」字段(從0到1)時,需要根據更新的行更改InvoiceDetails和InventoryMaster的「狀態」字段。
Reltionships: InvoiceHead_id = InvoiceDetails_id(FK)和 InventoryMaster_Processid = InvoiceHead_id(FK)
怎麼能寫在InvoiceHead觸發?
請幫忙解決這個..
謝謝你的朋友,這工作正常,你能清除我嗎你不是很忙,你有什麼提到的abt整個行更新問題的SQL相比於oracle?我認爲我的觸發器現在完美工作在基於行的更新,其在sqlserver 2008 –
你的觸發器有**主要**缺陷,你似乎認爲它會被稱爲**每行一次** - 這是**不是** 案子。觸發器將在每個語句**中觸發一次**,所以如果你的UPDATE語句影響了25行,你將觸發**觸發**一次,但是,然後「插入」和「刪除」將分別包含25行。您的代碼在這25行中選擇哪一個?從插入的i中選擇@ status = i.status;' - 這是非確定性的,你會得到一個任意的行,並且你將**忽略所有其他的行。你需要重寫你的觸發器來考慮這個問題! –
@marc_s是你說的是正確的..這就是我在上次聲明中提到的..在SQL觸發器工作的整個更新語句,如果25更新發生此觸發器將立即觸發25不像在oracle中一行一行。我要求他注意的問題 – Sachu