我只是想知道如果有人可以幫我開始創建一個trigger
。創建觸發器
我需要創建檢查某些字符
的INSERT
聲明觸發
如:
INSERT INTO table
VALUES('ABC')
我要檢查插入值有A,然後是B,那麼C.
任何幫助都會很棒。 感謝
我只是想知道如果有人可以幫我開始創建一個trigger
。創建觸發器
我需要創建檢查某些字符
的INSERT
聲明觸發
如:
INSERT INTO table
VALUES('ABC')
我要檢查插入值有A,然後是B,那麼C.
任何幫助都會很棒。 感謝
create or replace trigger iTableABC
before insert
on table
for each row
begin
if :new.value = 'ABC' then
-- Do what it is you want here
end if;
end;
/
這會觸發insert
之前,檢查值 'ABC'。如果您希望在insert
之後觸發它,請進行適當的更改。我們假設表table
有一個字段叫做value
。
謝謝。我已經去了..但是檢查數字時出錯。':new.value
你是否用一個冒號TO_NUMBERing字符串? – Ollie
檢查Documentation創建觸發器,或者嘗試this link。要檢查是否包含某些子字符串,請嘗試使用Instr函數。
這樣做的最好方法 - 最好的,因爲它是最高性能,最簡單,正確的做法 - 將使用檢查約束。
爲了您的原來的例子可能看起來像這樣的:
alter table t1
add constraint t1_col1_ck check (col1 = 'ABC')
;
您的評論給的例子是行不通的,因爲你是應用TO_NUMBER函數將字符串是不是數字,因爲它包含了結腸。它應該檢查DATE列的時間元素嗎?如果是這樣,這可能工作:
alter table t1
add constraint t1_starttime_ck
check ((start_date - trunc(start_date) < 0.5)
;
精確的細節取決於要執行這些規則。關鍵是應該儘可能通過約束來執行完整性規則而不是觸發器,這通常是可能的。
謝謝..我想要做的是檢查是否插入'GMT + 12:00'例如有GMT然後+或 - 然後在-12:00和12:00之間:/ –
您應該先閱讀手冊:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7004.htm。 Oracle手冊頁包含很多很好的示例,可以爲您提供提示 –
如果值不正確會發生什麼?如果你想防止無效數據進入你的數據庫,一個'CHECK'約束將是一個更好的主意。 –
如果您在某些命令中檢查某些字符等,請查看正則表達式:http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm – Ollie