Rex

          ——生命不止,奮斗不息。
          posts - 27, comments - 8, trackbacks - 0, articles - 0
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          mysql 觸發(fā)器

          Posted on 2017-11-24 14:33 W.R 閱讀(250) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): mySql
          一、觸發(fā)器概念 觸發(fā)器(trigger):監(jiān)視某種情況,并觸發(fā)某種操作,它是提供給程序員和數(shù)據(jù)分析員來(lái)保證數(shù)據(jù)完整性的一種方法,它是與表事件相關(guān)的特殊的存儲(chǔ)過(guò)程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動(dòng),而是由事件來(lái)觸發(fā),例如當(dāng)對(duì)一個(gè)表進(jìn)行操作( insert,delete, update)時(shí)就會(huì)激活它執(zhí)行。 觸發(fā)器經(jīng)常用于加強(qiáng)數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等。 觸發(fā)器創(chuàng)建語(yǔ)法四要素: 1.監(jiān)視地點(diǎn)(table) 2.監(jiān)視事件(insert/update/delete) 3.觸發(fā)時(shí)間(after/before) 4.觸發(fā)事件(insert/update/delete) 觸發(fā)器基本語(yǔ)法如下所示: DROP TRIGGER if EXISTS 觸發(fā)器名; CREATE TRIGGER 觸發(fā)器名 BEFORE INSERT ON 表名 FOR EACH ROW BEGIN sql語(yǔ)句 END 其中: trigger_time是觸發(fā)器的觸發(fā)事件,可以為before(在檢查約束前觸發(fā))或after(在檢查約束后觸發(fā)); trigger_event是觸發(fā)器的觸發(fā)事件,包括insert、update和delete,需注意對(duì)同一個(gè)表相同觸發(fā)時(shí)間的相同觸發(fā)事件,只能定義一個(gè)觸發(fā)器; 可以使用old和new來(lái)引用觸發(fā)器中發(fā)生變化的記錄內(nèi)容。 觸發(fā)器SQL語(yǔ)法: DROP TRIGGER if EXISTS triggle_insert_enroll_students; CREATE TRIGGER triggle_insert_enroll_students AFTER INSERT ON t_course_enroll_students FOR EACH ROW BEGIN -- update t_course_enroll_students set pid=(select id from t_course_enroll where t_course_enroll.course_name=t_course_enroll_students.course_name) where id=t_course_enroll_students.id; set new.pid=(select id from t_course_enroll where t_course_enroll.course_name=new.course_name); END

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 静安区| 陆丰市| 刚察县| 盖州市| 泰兴市| 黄陵县| 松江区| 阳西县| 印江| 克山县| 九江市| 美姑县| 江口县| 茂名市| 九龙坡区| 双柏县| 昆明市| 浙江省| 郎溪县| 灯塔市| 晋宁县| 资溪县| 江城| 乐安县| 澳门| 泸西县| 寻甸| 新龙县| 苍南县| 酒泉市| 定陶县| 合水县| 九江市| 渝北区| 渭南市| 大宁县| 滕州市| 沂源县| 日照市| 隆回县| 龙门县|