最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql創(chuàng)建觸發(fā)器時報1064錯誤問題及解決

 更新時間:2023年08月26日 15:48:42   作者:牧野風(fēng)涼  
這篇文章主要介紹了mysql創(chuàng)建觸發(fā)器時報1064錯誤問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

mysql創(chuàng)建觸發(fā)器時報1064錯誤

1.這里有兩張表,book和enterbook,book表中的bookid是enterbook的外鍵,這里想創(chuàng)建一個insert觸發(fā)器,實(shí)現(xiàn)向enterbook表中添加一條數(shù)據(jù)時,同時也會向book中添加一條數(shù)據(jù)。

book:

在這里插入圖片描述

enterbook:

在這里插入圖片描述

2.通常百度的mysql創(chuàng)建觸發(fā)器的語句是這樣的,

CREATE TRIGGER
  觸發(fā)器名
  BEFORE (AFTER) 
  觸發(fā)事件
ON
  表名
FOR EACH ROW 
BEGIN
  執(zhí)行語句列表
END

所以就這兩個表來說,創(chuàng)建的語句應(yīng)該是這樣的,

create trigger trigger_1
after insert on enterbook for each row
begin
	insert into book(bookid,bookname,writer,publisher,publishdate,quantity,price)
	values(bookid,bookname,writer,publisher,publishdate,quantity,price);
end;

雖然運(yùn)行結(jié)果顯示的是沒錯誤,但在添加數(shù)據(jù)的時候,就會一直報錯。

在sql語法中有兩張表,對于insert操作來說,inserted存放的是要插入的數(shù)據(jù),deleted表存放的是被刪除的記錄。

但是在mysql的語法中,不是inserted表和deleted表,而是new和old表,所以此處觸發(fā)器語句應(yīng)該改成:

create trigger trigger_1
after insert on enterbook for each row
begin
	insert into book(bookid,bookname,writer,publisher,publishdate,quantity,price)
	values(new.bookid,new.bookname,new.writer,new.publisher,new.publishdate,new.quantity,new.price);
end;

劃重點(diǎn)?。?!千萬不能漏了分號

mysql觸發(fā)器for each row解釋

create trigger mytrigger alert insert on t_a for each row
begin
? ? ? ? insert into t_b
? ? ? ? ? ? set name=new.name,
? ? ? ? ? ? set number=new number;

程序體或者是

? ? set @name=new.name;
? ? set @number=new.number;
? ? insert into t_b (name,number) values (@name,@number);
end
  • foreachrow每行受影響,觸發(fā)器都執(zhí)行,叫行級觸發(fā)器。
  • oracle觸發(fā)器中分行級觸發(fā)器和語句級觸發(fā)器,可不寫foreachrow,無論影響多少行都只執(zhí)行一次。
  • mysql不支持語句觸發(fā)器,所以必須寫foreachrow;

觸發(fā)器的old和new

after觸發(fā)器—是在記錄操縱之后觸發(fā),是先完成數(shù)據(jù)的增刪改,再觸發(fā),觸發(fā)的語句晚于監(jiān)視的增刪改操作,無法影響前面的增刪改動作

before觸發(fā)器—是在記錄操縱之前觸發(fā),是先完成觸發(fā),再增刪改,觸發(fā)的語句先于監(jiān)視的增刪改,我們就有機(jī)會判斷,修改即將發(fā)生的操作,如:我們在觸發(fā)之前需要判斷new值和old值的大小或關(guān)系,如果滿足要求就觸發(fā),不通過就修改再觸發(fā);如:表之間定義的有外鍵,在刪除主鍵時,必須要先刪除外鍵表,這時就有先后之分,這里before相當(dāng)于設(shè)置了斷點(diǎn),我們可以處理刪除外鍵。

  • 對于INSERT語句, 只有NEW是合法的;
  • 對于DELETE語句,只有OLD才合法;
  • 對于UPDATE語句,NEW、OLD可以同時使用。

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 只使用命令對數(shù)據(jù)庫(mysql)以及表進(jìn)行操作方法(附詳細(xì)圖文)

    只使用命令對數(shù)據(jù)庫(mysql)以及表進(jìn)行操作方法(附詳細(xì)圖文)

    這篇文章主要介紹了如何只使用命令對數(shù)據(jù)庫(mysql)以及表進(jìn)行操作方法的相關(guān)資料,包括連接數(shù)據(jù)庫、創(chuàng)建和刪除數(shù)據(jù)庫、使用數(shù)據(jù)庫、創(chuàng)建表、插入數(shù)據(jù)、查詢數(shù)據(jù)、更新數(shù)據(jù)、刪除數(shù)據(jù)、查詢表結(jié)構(gòu)、修改表結(jié)構(gòu)和刪除表等,需要的朋友可以參考下
    2025-11-11
  • MYSQL常用字符串函數(shù)和時間函數(shù)示例詳解

    MYSQL常用字符串函數(shù)和時間函數(shù)示例詳解

    字符串函數(shù)是最常用的的一種函數(shù),在一個具體應(yīng)用中通常會綜合幾個甚至幾類函數(shù)來實(shí)現(xiàn)相應(yīng)的應(yīng)用,這篇文章主要介紹了MYSQL常用字符串函數(shù)和時間函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2025-07-07
  • 詳解MySQL數(shù)據(jù)類型DECIMAL(N,M)中N和M分別表示的含義

    詳解MySQL數(shù)據(jù)類型DECIMAL(N,M)中N和M分別表示的含義

    關(guān)于MySQL數(shù)據(jù)類型decimal中n和m分別表示什么含義?本文就此問題作了簡單論述,并創(chuàng)建相關(guān)表進(jìn)行驗(yàn)證,需要的朋友可以了解下。
    2017-10-10
  • Mysql中undo、redo與binlog的區(qū)別淺析

    Mysql中undo、redo與binlog的區(qū)別淺析

    大家應(yīng)該都知道日志系統(tǒng)主要有redo log(重做日志)和binlog(歸檔日志),下面這篇文章主要給大家介紹了關(guān)于Mysql中undo、redo與binlog區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • MySQL鎖等待排查的問題解決

    MySQL鎖等待排查的問題解決

    本文主要介紹了MySQL如何排查鎖等待問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • 解析MySQL中INSERT INTO SELECT的使用

    解析MySQL中INSERT INTO SELECT的使用

    本篇文章是對MySQL中INSERT INTO SELECT的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • MySQL語句匯總整理

    MySQL語句匯總整理

    這篇文章主要給大家分享的是MySQL語句匯總整理,圍繞MySQL語句的相關(guān)資料對其進(jìn)行整理,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你有所幫助
    2021-12-12
  • 詳解MySQL的主從復(fù)制、讀寫分離、備份恢復(fù)

    詳解MySQL的主從復(fù)制、讀寫分離、備份恢復(fù)

    本篇文章主要對MySQL的主從復(fù)制、讀寫分離、備份恢復(fù)進(jìn)行詳細(xì)全面的講解,具有很好的參考價值,需要的朋友一起來看下吧
    2016-12-12
  • mysql按照天統(tǒng)計(jì)報表當(dāng)天沒有數(shù)據(jù)填0的實(shí)現(xiàn)代碼

    mysql按照天統(tǒng)計(jì)報表當(dāng)天沒有數(shù)據(jù)填0的實(shí)現(xiàn)代碼

    這篇文章主要介紹了mysql按照天統(tǒng)計(jì)報表當(dāng)天沒有數(shù)據(jù)填0的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2018-01-01
  • MySQL: mysql is not running but lock exists 的解決方法

    MySQL: mysql is not running but lock exists 的解決方法

    下面可以參考下面的方法步驟解決。最后查到一個網(wǎng)友說可能和log文件有關(guān),于是將log文件給移除了,再重啟MySQL終于OK了
    2009-06-06

最新評論

时尚| 柞水县| 定西市| 来凤县| 白水县| 桦南县| 集贤县| 长子县| 石林| 额尔古纳市| 莫力| 安丘市| 邮箱| 绥江县| 盱眙县| 巫溪县| 岢岚县| 江川县| 苏州市| 大城县| 中山市| 石狮市| 乡宁县| 马山县| 天长市| 油尖旺区| 额尔古纳市| 江达县| 友谊县| 会昌县| 都匀市| 阿图什市| 中江县| 永寿县| 体育| 曲周县| 营山县| 宁南县| 临夏县| 江华| 宁陕县|