[英]Sql update column every time a row is inserted
好的,所以我有了這個表:具有ID的VersionsEditor-bigint版本-整數startdate-日期endDate-日期bookId-整數
我的問題:當我為某本書插入新行時,endDate值必須為“進行中”。 因此,我認為我不能將日期作為列類型。邏輯是當我擁有某本書的最高版本時,那么endDate必須為“進行中”
為什么要使用日期列作為狀態? 相反,您需要另一列狀態。 我可能會建議一個觀點:
create view v_book as
select b.*,
(case when startDate is null then 'NotStarted'
when endDate is null then 'InProgress'
else 'Done'
end) as Status
from books
那樣的觸發器(Oracle DB)呢?
CREATE OR REPLACE TRIGGER t
BEFORE
INSERT OR
UPDATE OF salary, department_id OR
DELETE
ON employees
BEGIN
CASE
WHEN INSERTING THEN
DBMS_OUTPUT.PUT_LINE('Inserting');
WHEN UPDATING('salary') THEN
DBMS_OUTPUT.PUT_LINE('Updating salary');
WHEN UPDATING('department_id') THEN
DBMS_OUTPUT.PUT_LINE('Updating department ID');
WHEN DELETING THEN
DBMS_OUTPUT.PUT_LINE('Deleting');
END CASE;
END;
/
日期應該是日期,而不是整數或varchar。 如果“進行中”的含義是不能指定任何日期,則在進行中時將其設置為null。 您可以這樣查詢它:
select coalesce( to_char(enddate, 'DD-MM-YYYY') , 'In progress' ) as end_date
from mytable
where ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.