【问题标题】:Mysql conditional insert(With the combined primary key)Mysql条件插入(带组合主键)
【发布时间】:2013-03-27 09:31:52
【问题描述】:

我有以下结构的表

id -- auto increment
name -- unique
group -- integer
Primary key(name,group)

我不想添加具有相同名称和组值的元素。

(i.e ("test",1) and ("test",1) should not be inserted.... and 
        ("test",1),("test",2) can be inserted).

如果不存在,我想插入一个值。我检查了Link

使用上面的链接可以进行操作,但问题是它只检查名称作为键而不与组结合(即插入值(“test”,1)和(“test”,2 ) 没有发生)

我该怎么做。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    我认为 name 列唯一的问题,请删除 name 列的唯一约束并尝试INSERT IGNORE INTO yourTable(name,group)values("test",2)

    【讨论】:

    • 是的,你是对的,删除唯一键后一切正常。感谢您有时间回答我。
    【解决方案2】:

    如果您的主键是namegroup 的组合

    你可以INSERT IGNORE

    INSERT IGNORE INTO yourTable
    SET name = 'test',
        group = 1;
    

    只要它们都是你的主键的一部分,这应该检查它们的组合

    【讨论】:

    • 我已经试过了。它只检查名称而不是组...(即在插入表中已经存在的 (test,1) 时它工作正常(未插入表中)...但是在给出 (test,2) 这是一个与以前不同的值,它没有被插入)
    • 那么你的主键可能不是两个字段的组合。因为这将违反数据库逻辑,即使它们是主要的,也要继续这样做
    猜你喜欢
    • 1970-01-01
    • 2016-06-15
    • 2010-10-29
    • 2012-11-18
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多