我正在尝试使用其中一个自动递增来执行复合键,但是当我尝试输入新行时,它只是继续顺序。
以下是发生的事情的例子:
Item_1 | Item_2
1 | 1
1 | 2
2 | 3
2 | 4
2 | 5
以下是我想要的例子:
Item_1 | Item_2
1 | 1
1 | 2
2 | 1
2 | 2
2 | 3
我以这种方式创建表:
CREATE TABLE IF NOT EXISTS `usuarios` (
`cod_user` int(11) NOT NULL AUTO_INCREMENT,
`cod_user_emp` int(11) NOT NULL,
PRIMARY KEY (`cod_user`,`cod_user_emp`),
UNIQUE KEY `user` (`user`),
KEY `cod_user` (`cod_user`)
);
我解决了服务器端php验证的问题。
$result = $db->query("SELECT * FROM usuarios WHERE cod_user_emp=\"$emp\" ORDER BY cod_user DESC LIMIT 1");
while($row=$result->fetch_array()){
$cod2 = $row['cod_user']+1;
}
答案 0 :(得分:2)
删除AUTO_INCREMENT
列,
CREATE TABLE IF NOT EXISTS `usuarios`
(
`cod_user` int(11) NOT NULL,
`cod_user_emp` int(11) NOT NULL,
PRIMARY KEY (`cod_user`,`cod_user_emp`) -- <<== this is enough
);
并且可以为Stored Procedure
创建Item_2
,增加Item_1
。
DELIMITER $$
CREATE PROCEDURE InsertRecord(IN ItemA INT)
BEGIN
SET @max_id = (
SELECT COALESCE(MAX(Item_2), 0) + 1
FROM TableName
WHERE Item_1 = ItemA
);
INSERT INTO tableName(Item_1, Item_2)
VALUES(ItemA, @max_id)
END $$
DELIMITER ;
并像这样称呼它,
CALL InsertRecord(2);