Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用InnoDB表类型实现这一点?_Php_Mysql_Sql - Fatal编程技术网

Php 如何使用InnoDB表类型实现这一点?

Php 如何使用InnoDB表类型实现这一点?,php,mysql,sql,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', `artcTitl

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

您可以使用其他线程中发布的触发器,也可以手动执行

伪代码:

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)

你能在table='articles'的位置运行
SHOW TRIGGERS吗?
?duplicate:@Norman嗯,因为解决方案需要一个触发器(如下所示),所以了解表上还有哪些其他触发器很重要。此表上没有其他触发器。