欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL 5.0觸發(fā)器參考教程第3/4頁

 更新時間:2008年09月10日 09:20:36   作者:  
需要學(xué)習(xí)mysql觸發(fā)器的朋友需要了解的東西,整理的比較多,建議大家慢慢多練習(xí)

  REVOKE CREATE TRIGGER ON <表名稱> FROM <用戶或用戶列表>;

  Referring to OLD and NEW columns 關(guān)于舊的和新創(chuàng)建的列的標(biāo)識

  在觸發(fā)器的SQL語句中,你可以關(guān)聯(lián)表中的任意列。但你不能僅使用列的名稱去標(biāo)識,那會使系統(tǒng)混淆,因為那里可能會有列的新名(這可能正是你要修改的,你的動作可能正是要修改列名),還有列的舊名存在。因此你必須用這樣的語法來標(biāo)識:

  "NEW . column_name"或者"OLD . column_name".這樣在技術(shù)上處理(NEW | OLD . column_name)新和舊的列名屬于創(chuàng)建了過渡變量("transition variables")。

  對于INSERT語句,只有NEW是合法的;對于DELETE語句,只有OLD才合法;而UPDATE語句可以在和NEW以及OLD同時使用。下面是一個UPDATE中同時使用NEW和OLD的例子。


CREATE TRIGGER t21_au
BEFORE UPDATE ON t22
FOR EACH ROW
BEGIN
SET @old = OLD . s1;
SET @new = NEW.s1;
END;//
  現(xiàn)在如果t21表中的s1列的值是55,那么執(zhí)行了"UPDATE t21 SET s1 = s1 + 1"之后@old的值會變成55,而@new的值將會變成56。

  Example of CREATE and INSERT CREATE和INSERT的例子

  CREATE table with trigger創(chuàng)建有觸發(fā)器的表

  這里所有的例程中我都假定大家的分隔符已經(jīng)設(shè)置成//(DELIMITER //)。

CREATE TABLE t22 (s1 INTEGER)//
  CREATE TRIGGER t22_bi
BEFORE INSERT ON t22
FOR EACH ROW
BEGIN
SET @x = 'Trigger was activated!';
SET NEW.s1 = 55;
END;//
  在最開始我創(chuàng)建了一個名字為t22的表,然后在表t22上創(chuàng)建了一個觸發(fā)器t22_bi,當(dāng)我們要向表中的行插入時,觸發(fā)器就會被激活,執(zhí)行將s1列的值改為55的動作。

  INSERT on table w ith a trigger使用觸發(fā)器執(zhí)行插入動作

  mysql> INSERT INTO t22 VALUES (1)//

  讓我們看如果向表t2中插入一行數(shù)據(jù)觸發(fā)器對應(yīng)的表會怎么樣?

  這里的插入的動作是很常見的,我們不需要觸發(fā)器的權(quán)限來執(zhí)行它。甚至不需要知道是否有觸發(fā)器關(guān)聯(lián)。

mysql> SELECT @x, t22.* FROM t22//
+------------------------+------+
| @x | s1 |
+------------------------+------+
| Trigger was activated! | 55 |
+------------------------+------+
1 row in set (0.00 sec)
  大家可以看到INSERT動作之后的結(jié)果,和我們預(yù)期的一樣,x標(biāo)記被改動了,同時這里插入的數(shù)據(jù)不是我們開始輸入的插入數(shù)據(jù),而是觸發(fā)器自己的數(shù)據(jù)。


  Example of a "check" constraint

  "check"完整性約束例子

  What's a "check" constraint 什么是"check"約束

  在標(biāo)準(zhǔn)的SQL語言中,我們可以在(CREATE TABLE)創(chuàng)建表的過程中使用"CHECK (condition)",

相關(guān)文章

最新評論