Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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 如何在序列中的同一插入上插入序列号?_Php_Mysql_Insert - Fatal编程技术网

Php 如何在序列中的同一插入上插入序列号?

Php 如何在序列中的同一插入上插入序列号?,php,mysql,insert,Php,Mysql,Insert,如何在表中插入一个数字,即来自同一FK的记录数加1 解释: 有一个表格可容纳相位数(1,2,3…)。 当创建一个新的阶段时,我想将列编号设置为已经存在的阶段编号的总和 我试着用COUNT 在平面图204上,将有3个相位。 在html表单上,我只想得到姓名和年份。用户不负责阶段的编号。添加时,它是一个序列号 INSERT INTO phase ( idPlan, name, number, constructionY

如何在表中插入一个数字,即来自同一FK的记录数加1

解释: 有一个表格可容纳相位数(1,2,3…)。 当创建一个新的阶段时,我想将列编号设置为已经存在的阶段编号的总和

我试着用COUNT

在平面图204上,将有3个相位。 在html表单上,我只想得到姓名和年份。用户不负责阶段的编号。添加时,它是一个序列号

INSERT INTO 
        phase (
        idPlan,
        name,
        number,
        constructionYear
        )
        VALUES (
        204,
        'jj',
         HERE IS THE SEQUENTIAL NUMBER,
        2001
        )

CREATE TABLE `phase` (
 `idPhase` int(11) NOT NULL AUTO_INCREMENT,
 `idPlan` int(11) NOT NULL,
 `number` int(11) NOT NULL,
 `constructionYear` year(4) NOT NULL,
 `name` varchar(100) DEFAULT NULL,
 PRIMARY KEY (`idPhase`),
 KEY `idPlan` (`idPlan`),
 KEY `idPlan_2` (`idPlan`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

您可以通过在
上插入
来实现这一点:

CREATE TRIGGER `phase_insert`
BEFORE INSERT ON `phase` FOR EACH ROW 
SET NEW.number = (SELECT COALESCE(MAX(number),0)+1 FROM phase WHERE idPlan=NEW.idPlan)
这将在
idPlan
INSERT
值之前找到
number
的最大值,将其递增1,然后插入该值。如果没有输入
iDPlan
值,则
COALESCE(MAX(number),0)
将返回0,因此将插入1

e、 在一张空桌子上

INSERT INTO phase (idPlan, name, number, constructionYear)
    VALUES (204, 'jj', 0, 2001), (204, 'xx', 0, 2002);
SELECT * FROM phase
输出:

idPhase     idPlan  number  constructionYear    name
3           204     1       2001                jj
4           204     2       2002                xx

嗨,雷南,这有用吗?如果没有,您能否提供更多信息来帮助解决问题?