想要某條語句在事件發生時自動執行(某錶發生改動時,自動處理)
除下列三個關鍵字意外的不支援觸發器
建立觸發器時,需要給出四條資訊:
create
trigger newproduct after
insert
on products
foreach
rowselect
'product added';
分析:
create trigger用來建立名為newproduct的新觸發器。觸發器可在乙個操作發生之前或之後,這裡給出了after insert,所以此觸發器將在insert語句成功執行後執行。這個觸發器還指定for each row,因此**對每個插入行執行。文字product added將對每個插入的行顯示一次。
僅支援表觸發器按每個表每個事件每次地定義,每個表每個事件每次只允許乙個觸發器。因此,每個表最多支援6個觸發器(每條update、delete、insert)。單一觸發器不能與多個事件或多個表關聯。只有表才支援觸發器,檢視不支援(臨時表也不支援)
drop
trigger newproduct;
觸發器不能更新或覆蓋。為了修改乙個觸發器,必須先刪除它。然後再重新建立。
create
trigger neworder after
insert
on orders
foreach
rowselect new.order_num;
建立乙個名為neworder的觸發器,它按照after insert on orders執行。在插入乙個新訂單到orders表時,mysql生成乙個新訂單號並儲存到order_num中。觸發器從new.order_num取得這個值並返回它。此觸發器必須按after insert執行,因為在before insert語句執行前,新order_num還沒有生成。對於orders每次插入使用這個觸發器總是返回新的訂單號。
為測試這個觸發器,試插入一下新行
insert
into orders(order_date,cust_id)
values(now(),10001);
#輸出order_num
20010
create
trigger deleteorder before
delete
on orders
foreach
rowbegin
insert
into archive_orders(order_num,order_date,cust_id)
values(old.order_num,old.order_date,old.cust_id);
end;
任意訂單被刪除前將執行此觸發器。它使用一條insert語句將old中的值儲存到乙個名為archive_orders的存檔表中(為實際使用這個例子,你需要用於orders相同的列建立乙個名為archive_orders的表) 資料庫觸發器
觸發器是一種特殊型別的儲存過程,它不同於我們前面介紹過的儲存過程。觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而 被直接呼叫。當對某一表進行諸如update insert delete 這些操作時,sql server 就會自動執行觸發器所定義的sql 語句,從而確保對資料...
資料庫觸發器
最近做了個觸發器的例子 create trigger tru user on user for update asif update status begin update user set stopflag 1 from inserted where user.userid inserted.us...
資料庫 觸發器
觸發器的概念 是使用者定義在關係表上的一類有事件驅動的特殊過程。一旦定義,任何對錶的增刪改操作均有伺服器自動啟用相應的觸發器,在dbms核心層進行集中的完整性控制。類似於約束,但比約束更靈活。觸發器的分類 dml觸發器 dml data manipulation language 觸發器是當資料庫伺...