【问题标题】:Mysql Composite primary key not working correctlyMysql 复合主键无法正常工作
【发布时间】:2013-07-29 19:55:31
【问题描述】:

这里的东西很基本,但由于某种原因,它似乎让我失望了。我有一个包含两列的查找表。两列都应构成主键。

所以复合键的语法很简单,我原以为这样就可以了。

CREATE TABLE jmc_userpermissions ( 
userpermissions_permissionid int NOT NULL,
userpermissions_username varchar(55) NOT NULL,
PRIMARY KEY (userpermissions_permissionid,userpermissions_username)
)

现在当我尝试填充时问题出现了。

INSERT INTO jmc_userpermissions ( userpermissions_permissionid, userpermissions_username ) VALUES ( 'updatecontact', 'angel' );
INSERT INTO jmc_userpermissions ( userpermissions_permissionid, userpermissions_username ) VALUES ( 'updateqty', 'angel' );

第二条语句返回错误:

无法将 angel 的 updateqty 插入到 jmc_userpermissions 中

键“PRIMARY”的重复条目“0-angel”

【问题讨论】:

    标签: mysql composite-primary-key


    【解决方案1】:

    查看您的表定义userpermissions_permissionid int NOT NULL,现在您正在插入一个 varchar,该 varchar 将在内部转换为 0。因此在第二次查询时会导致重复键错误,因为键“0-angel”在之后已经存在第一次插入。从技术上讲,您在两个查询中都将相同的值插入到您的表中。

    【讨论】:

    • 啊,不错。这就是我改变设计而不是彻底的结果。
    猜你喜欢
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 2017-01-20
    • 2017-09-04
    • 1970-01-01
    相关资源
    最近更新 更多