在寫SQL中,我們經常遇到這樣一類問題。每一次插入的時候都要判斷數據表中是不是已經存在這條數據,所謂相同數據,是除了主鍵以外全部列都相同,沒有則插入,有則更新。在這種情境下,我們並不清楚知道這一列是否存在,所以單純的插入和更新都有問題,於是有的人選擇了刪掉對應id,然後全部重新插入,這裡遇到的問題就是,主鍵自增,刪掉了會產生巨大空洞,並不是個好的設計。
在MySQL下,我采用的方法是:
insert into case_law (case_id,laws_id) (select 1,2 from dual where not EXISTS (select case_id,laws_id from case_law where case_id=1 and laws_id=2)
如上簡單手段就可實現插入的時候檢查是否存在。