Первичный ключ Mysql Composite работает неправильно

Довольно простые вещи здесь, но по какой-то причине, кажется, что они меня не устраивают. У меня есть таблица поиска, состоящая из двух столбцов. Оба столбца должны составлять первичный ключ.

Так что синтаксис для составного ключа достаточно прост, и я бы подумал, что это сделало бы это.

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' );

Второй оператор возвращает ошибку:

Не удалось вставить updateqty для ангела в jmc_userpermissions

Дублирующаяся запись «0-angel» для ключа «PRIMARY»


person S Cloud    schedule 29.07.2013    source источник


Ответы (1)


Посмотрите на определение вашей таблицы userpermissions_permissionid int NOT NULL, теперь вы вставляете varchar, который будет внутренне преобразован в 0. Поэтому это приведет к ошибке дублирования ключа во втором запросе, поскольку ключ «0-angel» уже существует после первой вставки. Технически вы вставляете одинаковые значения в свою таблицу в обоих запросах.

person Flo Doe    schedule 29.07.2013
comment
а, хороший улов. Вот что я получаю за то, что изменил свой дизайн и не был тщательным. - person S Cloud; 30.07.2013