JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » JDBC/SQL討論區 » MySQL  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 判斷tableA表格資料是否有被tableB參考
何牙籤





發文: 2
積分: 0
於 2017-08-23 01:34 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我有tableA和tableB
a為tableA的主索引鍵 b為tableB的外部索引鍵
我要刪除某筆tableA之前必須先檢查是否有tableB的索引鍵參考此筆資料
若沒有才能刪除
這是我先前的寫法
DELETE FROM tableA WHERE a=?
AND NOT EXISTS(SELECT 0 FROM tableB WHERE tableA.a=b)

但我想要修改成
將tableA全部的資料取出時可以判斷
每筆是否有tableB的索引鍵參考此筆資料
若沒有則顯示刪除功能 有則不顯示此功能
請問我該怎樣做呢?
感謝耐心看完~


何牙籤 edited on 2017-08-23 03:36
reply to postreply to post
作者 Re:判斷tableA表格資料是否有被tableB參考 [Re:何牙籤]
kentyeh





發文: 642
積分: 6
於 2017-08-23 03:16 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
這是典型的資料表設計,只要在B設定 reference a (不要 cascading delete)就好了,
每一筆都可以刪除,刪除不掉顯示 constraint 的錯誤就好了,

或設保留你原本的 SQL,如果 row affected 的筆數是0, 告訴User無法刪除就好了
(原因可能是那筆資料早就被刪除了或都因為B有reference無法被刪除)

若是用你想要達成的設計,
在多人同時使用的環境下,也許你查的時機點沒有B reference A,
但無法保證到刪除之前的這段時間,B沒有新的 row reference A.


reply to postreply to post
作者 Re:判斷tableA表格資料是否有被tableB參考 [Re:kentyeh]
何牙籤





發文: 2
積分: 0
於 2017-08-23 07:04 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
不好意思,我可能沒有解釋清楚
我是有一個列表顯示tableA的所有資料 旁邊會放置刪除的按鈕
1 xxx 刪除
2 xxx 刪除
3 xxx 刪除
4 xxx 刪除
5 xxx 刪除
按下刪除時才能告知使用者無法刪除
但請問可以在取出的當下判斷B是否reference A嗎?
因為我需要在畫面上決定是否有刪除的按鈕 如下圖
1 xxx 刪除
2 xxx
3 xxx 刪除
4 xxx
5 xxx
感謝您的答覆~


reply to postreply to post
作者 Re:判斷tableA表格資料是否有被tableB參考 [Re:何牙籤]
Landgray





發文: 78
積分: 0
於 2017-08-25 08:19 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
給你幾個關鍵字,

A left join B
table A column:重複的資料group by 或是用 distinct
table B column:count

都會用了就應該有答案了


reply to postreply to post
» JWorld@TW »  JDBC/SQL討論區 » MySQL

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8