如何使用InnoDB表类型完成此操作?

时间:2013-05-03 11:18:20

标签: php mysql sql

我有以下使用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;

ScreenCapture

1 个答案:

答案 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)