2012-04-25 33 views
-2
insert into creditcard_info (member_id,card_type,card_number) 
values ('1','Discover','555') 
where not exists (
     select * from creditcard_info 
     where card_number='555' and 
      card_type='Discover') 

我希望能夠檢查一個身份證號碼已經存在.. 如果CARD_NUMBER存在,然後卡CARD_TYPE存在不添加 與卡一起插入其他新卡號鍵入mysql插入不存在語法錯誤。我不知道什麼是錯的

我很難與插入某個數字不存在的表中。

即時得到這個錯誤:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL 
server version for the right syntax to use near 'where not exists (select * from 
creditcard_info where card_number='555')' at line 2 

謝謝大家提前幫助我:)

+1

創建'CARD_NUMBER + card_type'領域 – zerkms 2012-04-25 02:15:41

+0

的事情是,卡類型設置爲僅幾類,是不是唯一的唯一索引....數量也可以相同與不同的類型....我只是想它,以便它檢查是否存在卡類型和卡號存在作爲記錄 – user1235103 2012-04-25 02:39:07

回答

0

它看起來像你想執行INSERT ... SELECT聲明。

但是,在兩個字段中添加唯一索引應該更有效。

0

您需要創建一個多列唯一索引。代碼如下:

ALTER TABLE creditcard_info ADD UNIQUE idx_card_number_card_type(card_number,card_type); 

這應該作爲單獨的查詢運行。你需要添加一次。
其他可能的選擇是在插入觸發器之前添加,如果條件比簡單的唯一檢查更復雜。 這裏是create trigger語法:

Create Trigger card_type_unique_card_number_exists Before Insert on creditcard_info 
    FOR EACH ROW BEGIN 
     DECLARE it_exists INT; 
     Set it_exists=(select count(*) from creditcard_info where card_number='555' and card_type='Discover'); 
     If it_exists>0 Then 
      #Throw a meaningful exception by let's say inserting into a table which doesn't exist or something 
     END IF; 
    END 
+0

事情是卡類型只設置爲幾種類型,並不是獨特的....也可以是不同類型的數字.... 我只是想它,以便它檢查是否存在卡類型和卡號作爲記錄存在 – user1235103 2012-04-25 02:26:44

+0

上述唯一索引將使組合獨一無二。它不會被應用於列表中的每一列。您的代碼有與card_type'XOR' card_number類似的行,但組合應該是唯一的。如果這仍不是你的意思,你可以在插入觸發器之前進行。我會在一分鐘之內將它添加到那裏。 – 2012-04-25 02:40:10

相關問題