觸發器

来源:http://www.cnblogs.com/xidongyu/archive/2016/10/31/6017200.html
-Advertisement-
Play Games

觸發器是一種過程完整性約束(CREATE TABLE 中定義的是非過程性約束)。觸發器是一段小程式,在程式在特定的時刻被自動觸發執行。 基本語法 語法含義:當某一事件(INSERT,DELETE,UPDATE)發生時,我們可以根據該事件產生的結果來判斷是否執行後面的程式段。 示例 設計一個觸發器,當... ...


觸發器是一種過程完整性約束(CREATE TABLE 中定義的是非過程性約束)。觸發器是一段小程式,在程式在特定的時刻被自動觸發執行。

基本語法

image

語法含義:當某一事件(INSERT,DELETE,UPDATE)發生時,我們可以根據該事件產生的結果來判斷是否執行後面的程式段。

示例

設計一個觸發器,當進行teacher表更新元組時,其工資只能升不能降

DELIMITER $$

CREATE TRIGGER teacher_chgsal
BEFORE UPDATE ON teacher
FOR EACH ROW
    BEGIN
        IF NEW.salary < OLD.salary THEN
            INSERT INTO error_log VALUES("invalid salary update");
        END IF;
    END$$
DELIMITER ;

在上面的代碼中,我們重新定義結束符為$$(MYSQL命令行客戶端一個SQL語句的結束標誌位是;),因為我們在寫觸發器程式時需要用到分號。上面的觸發器規定在對teacher進行更新操作時之前,會對每個更新操作進行檢查(FOR EACH ROW),因為用戶的一條SQL語句可以進行多行更新。檢查的內容是BEGIN…END中間的代碼塊。NEW表示更新後的元組,OLD表示在更新操作執行前資料庫中存儲的元組。如果發現更新的值小,則在error_log中插入一條記錄。

更新前的記錄

image

更新後的記錄

image

error_log表中的數據

image

error_log表中多了一條記錄,表示更新出現錯誤(001的工資變少了)

MYSQL觸發器的使用請見

https://dev.mysql.com/doc/refman/5.5/en/triggers.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 因為是window電腦上運行的,所以測試的是安卓 1: 安裝jdk:jdk-8u45-windows-x64.exe 2: 配置JAVA的環境變數 在安卓的配置基礎上添加一個變數ANDROID_HOME,見圖 由於我電腦上本來就擁有安卓環境,所以配置很容易 3:安卓nodejs開發環境 首先在Nod ...
  • 矩形或圓角類型(源代碼下有屬性解釋) 一、shape 樣式:(在drawable新建--》new--》Drawable resource file 並把原父級標簽selector改為shape ) 矩形或圓角類型 android:shape屬性指定形狀 rectangle: 矩形,預設的形狀,可以畫 ...
  • 解決辦法: hud.userInteractionEnabled= NO; 就是這麼簡單粗暴!這個問題 我一定要發到首頁候選區! /****************************************此處不用看,只是為了湊夠150字**************************** ...
  • b.定義兩個畫筆,並對畫筆進行初始化內容: c.重寫onDraw函數:這裡要註意下save函數和restore函數之間的區別,前者是保存畫布的狀態,然後經過onDraw函數後,會對畫布進行一些操作,比如旋轉之類,這裡是添加文字,而後者是對操作後的畫布進行保存。 d.在佈局中引用自定義textview ...
  • 打開終端, 用cd命令 定位到工程所在的目錄,然後調用以下命名即可把每個源代碼文件行數及總數統計出來: find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.h" -or -name "*.rss" ")" -p ...
  • 在這個全民娛樂的時代,直播已經火得不要不要的,各大公司都有自己的直播產品。本文主要從直播的一些基本知識,一步步打造直播app。直播那麼火的背後有什麼樣的技術支撐呢? ...
  • 前言 啦啦啦~博主又推出了一個新的系列啦~ 之前的Android開發系列主要以完成實驗的過程為主,經常會綜合許多知識來寫,所以難免會有知識點的交雜,給人一種混亂的感覺。 所以博主推出“重點難點”系列,將博主在完成實驗的過程中遇到的重、難點或者出現問題較多的地方寫出來與大家分享,使大家能更好的學習An ...
  • 在學習PHP與MySQL時,利用PHP操作MySQL插入數據時,發現插入中文時時亂碼,創建資料庫以及資料庫表時均制定了utf-8編碼,一開始是html頁面並沒有設置為utf-8編碼,在將html頁面設置為 以及PHP代碼中添加 後,發現插入到資料庫的中文依然是亂碼。 百思不得其解,後經度娘發現,需要 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...