2014-12-04 127 views
0

我需要編寫一個MySQL查詢插入或更新一些字段。我見過ON DUPLICATE KEY,但我的字段不是PRIMARY KEYUNIQUE,只有組合是唯一的。下面是字段列表:插入或更新如果記錄已存在MySQL

ID(PRIMARY KEY AUTOINCREMENT BIGINT),用戶(BIGINT),創建者(BIGINT),類型(TINYINT),值(BIGINT),日期(INT),readed(TINYINT),擦除(TINYINT)。

表名是通知(如果它可能有用)。如果用戶,創建者,類型,值與要插入的值完全相同(如AND),則需要插入新記錄或更新現有記錄。我該怎麼做?

+3

添加對組合的唯一密鑰。一個鍵可以在多個字段 – 2014-12-04 22:41:47

+0

插入或更新如果存在是[替換](http://dev.mysql.com/doc/refman/5.0/en/replace.html)用於 – andrew 2014-12-04 22:41:48

+0

@Dagon,使用UNIQUE例如在現場的用戶,然後我可以插入兩行具有相同的用戶值,但其他人不同? – RyanJ 2014-12-04 23:01:32

回答

0

您可以在變量上創建唯一索引。我不知道這是有問題的變量,但這裏有一個例子:

create unique index idx_table_user_creator_type on table(user, creator, type) 

你也可以做到這一點的create table聲明爲好,使用語法爲unique約束。

你會再使用約束爲:

insert into table(user, creator, type, col1, . . .) 
    values(@user, @creator, @type, . . .) 
    on duplicate key update col1 = values(col1), 
          col2 = values(col2), 
          . . . ; 
相關問題