如果记录已存在MySQL,则INSERT或UPDATE

时间:2014-12-04 22:36:56

标签: php mysql sql

我需要编写一个MySQL查询来插入或更新一些字段。我见过ON DUPLICATE KEY,但我的字段不是PRIMARY KEYUNIQUE,只有组合是唯一的。这是字段列表:

  

ID(PRIMARY KEY AUTOINCREMENT BIGINT),用户(BIGINT),创建者(BIGINT),类型(TINYINT),值(BIGINT),日期(INT),readed(TINYINT),擦除(TINYINT)。

表名是通知(如果它有用)。如果用户,创建者,类型,值与要插入的值完全相同(如AND),我需要插入新记录或更新现有记录。我怎么能这样做?

1 个答案:

答案 0 :(得分: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),
                            . . . ;