我目前有一個問題實現一個簡單的任務,其中一個現有的客戶的新工作,直到他們還清債務時才被批准。我認爲這會很簡單,直到我發現SQL-92斷言在Oracle中不工作... ...SQL/Oracle 10g - 問題與斷言
我環顧網絡,看到有可能做同樣的事情,但與觸發器/檢查約束。然而,我完全失去了如何實現這一目標。
我的數據庫的結構,像這樣:
Table invoice is in a one-to-many relationship with jobs
Table jobs is in a many-to-one relationship with client
目前我有:
CREATE TRIGGER check_debt
BEFORE UPDATE ON jobs
FOR EACH ROW
WHEN ((SELECT * FROM client WHERE clientNo =
(SELECT * FROM jobs WHERE jobNo =
(SELECT * FROM invoice WHERE status = 'Debt Owing'))))
COMMIT;
正如你所看到的,我不知道如何來模擬一個觸發斷言.. 。
任何幫助表示讚賞!
謝謝。
注意:我在練習使用SQL-92和SQL-99標準。
你能用文字解釋你試圖在這個觸發器中斷言什麼嗎?我很難理解這個觸發器的目標是什麼。這可能也有助於在這裏定義四個表格('client','jobNo','invoice'和'jobs') –
對不起,實際上有3個表格(jobNo應該是工作......我的壞話)。基本上,我想斷言,除非他們以前的工作發票已經支付(因此發票中的狀態是「債務欠款」),否則不能從現有客戶接受工作(客戶有多個工作提議)。希望清除它更高技能 – tester