我有以下使用MyIsam表类型的代码,因为看到了创建代码中的注释。如何使用Innodb完成这项工作。
实际上,基于用户生成新的文章ID,并且每个用户从1开始。但是,如果更改表类型,则无法执行此操作。使用INNODB时如何实现这一目标?
CREATE TABLE `articles` (
`artcId` INT(10) NOT NULL AUTO_INCREMENT,
`artcUserId` INT(10) NOT NULL DEFAULT '0',
`artcTitle` VARCHAR(50) NOT NULL DEFAULT 'No title defined',
`arctTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`artcUserId`, `artcId`)// See this part here and see the Image below.
)
COLLATE='utf8_general_ci'
ENGINE=myisam;
答案 0 :(得分:0)
您可以使用在其他线程中发布的触发器或手动执行此操作。
伪代码:
START TRANSACTION; -- needs to be in a transaction
...
SELECT @lastid := MAX(idItem) FROM item WHERE idArticulo = ?;
INSERT INTO item (idArticulo, idItem, texto)
VALUES (?, @lastid+1, ?);
...
COMMIT;
To handle the first-time situation:
MAX(idItem)
-->
IFNULL(MAX(idItem), 1)