看板 PHP 關於我們 聯絡資訊
※ 引述《dream1x (翻桌客 )》之銘言: : 有好幾個資料表都有同樣欄位需要刪除 : 功能我這樣土法煉鋼是可以達到的 : 但是效率的問題 : 是否有一氣呵成的sql下法呢 : 一次把所有表格的 tourid = 10都給刪掉(型態長度皆同等) : 目前程式碼 : mysql_query("delete from tra where tourId = 10", $link)or die(mysql_error()); : mysql_query("delete from bad where tourId = 10", $link)or die(mysql_error()); : mysql_query("delete from gue where tourId = 10", $link)or die(mysql_error()); : mysql_query("delete from rec where tourId = 10", $link)or die(mysql_error()); : mysql_query("delete from alb where tourId = 10", $link)or die(mysql_error()); : 感謝 最近都沒在用 mysql 所以直接去看它們的文件. 3.23+ 方法有 2 種 1. reference 在 create table 的時候就建 FOREIGN KEY ON DELETE CASCADE ; 這樣砍主表, 附資料會全部一起砍光光. 2. SQL FUNCTION CREATE FUNCTION 其實只是把你在PHP寫的都放到 SQL 裡 結論能用1是最好啦. 不能的話就乖乖砍吧 -- Live Long and Prosper -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.63.31.135
dream1x :謝謝 那我採用方案1試試看 08/13 11:20
arrack :推關聯 08/13 12:49
arrack :說到這個,有推薦的TOOL可以直接看關聯圖嗎 08/13 12:53
arrack :像是SQL SERVER那樣 08/13 12:53
arrack :目前我是用Navicat,感覺在建立關聯上,很不方便 08/13 12:54
alpe :ERD 圖啊有. 08/13 13:50
cjoe :方案1..是不是只有在InnoDB有用? 08/13 14:58
cjoe :用trigger來達到也以 意思跟2一樣 08/13 14:59
alpe :trigger 還多一道工, 別麻煩了. 08/13 15:30
cjoe :不想多一道工,前題是用innoDB格式吧 08/13 15:52
cjoe :方案1好像只有在InnoDB格式下能用 08/13 15:52
arrack :Navicat 8 目前沒看到哪裡會顯示ERD?! 08/13 15:53
alpe :我是用 microOLAP 08/13 16:04
KC73 :我覺得,分五次刪,或者一次刪,mysql還是都要去刪5筆資 08/13 18:05
KC73 :料,其他做五次跟做一次,差別應該不會太大. 08/13 18:07
KC73 :然後,你的tourId有建索引嗎? 08/13 18:07
alpe :只要傳一次東西給db, 小站是沒差啦, 大站就科科 08/14 00:25