[SQL ] trigger觸發問題

看板Database作者 (RU)時間9年前 (2015/06/11 19:19), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串1/1
(針對 SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行) 資料庫名稱:MySQL 資料庫版本:5.7.7 內容/問題描述: 各位板上先進大家好,小弟PPT第一次PO文,請多多指教。 小弟目前設計一個資料庫有4個表格,就稱他為ABCD表格 A表格紀錄駕駛資料,欄位有:駕駛id、駕駛名稱 B表格紀錄車輛資料,欄位有:車輛id、載客(無載客為0有載客為1) C表格紀錄叫車紀錄(客人上車前紀錄),欄位有:叫車紀錄id、駕駛名稱 D表格紀錄載客紀錄(客人下車後記錄),欄位有:載客紀錄i、金額d 我在C表格寫了一個trigger,想要在C欄位輸入資料前,將B表格載客的0更新為1 語法:CREAT TRIGGER `NAME` BEFORE INSERT ON `叫車紀錄` FOR EACH ROW BEGIN UPDATE A, B, C set B.載客='1' where A.駕駛id = C.駕駛id and A.車輛id = B.車輛id; END 輸入完畢後,出現一個奇怪的問題,我要在C表格輸入兩筆資料才會成功更新載客, 也就是第1筆、第3筆資料輸入完全沒有觸發trigger。 後來依照一樣的語法在D表格寫一個trigger(把載客改回0) 出現一模一樣的結果,第一筆資料輸入無法觸發trigger。 另外有個更奇怪問題,我輸入完trigger觸發失敗後,想休息一下先關掉程式, 再打開後我的資料庫就打不開那幾個表格了,一直轉圈圈。後來好像有跑出bug 之類的訊息。 我只是剛學DB新手,如果是很低端的錯誤請鞭小力一點。 還請各位先進替小的解惑。萬分感激。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.103.172 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1434021558.A.076.html

06/11 19:27, , 1F
BUG是 索引超出範圍。必須為非負數且小於集合的大小。
06/11 19:27, 1F

06/11 20:32, , 2F
我把資料表刪掉問題1就沒了,但是問題2重建後還是存在
06/11 20:32, 2F

06/11 20:34, , 3F
說反了 問題2消失 問題1還是存在
06/11 20:34, 3F

06/11 22:16, , 4F
UPDATE B set B.載客='1' where B.車輛id IN (SELECT
06/11 22:16, 4F

06/11 22:16, , 5F
A.車輛id FROM A WHERE A.駕駛id = ROW.駕駛id );
06/11 22:16, 5F

06/11 22:16, , 6F
不知道可不可以!?
06/11 22:16, 6F

06/12 22:30, , 7F
C表格存的應該是 叫車紀錄id 駕駛id 車輛id
06/12 22:30, 7F

06/12 22:33, , 8F
UPDATE B set B.載客='1' where B.車輛id = new.車輛id
06/12 22:33, 8F
文章代碼(AID): #1LUMws1s (Database)