Php 如何在序列中的同一插入上插入序列号?
如何在表中插入一个数字,即来自同一FK的记录数加1 解释: 有一个表格可容纳相位数(1,2,3…)。 当创建一个新的阶段时,我想将列编号设置为已经存在的阶段编号的总和 我试着用COUNT 在平面图204上,将有3个相位。 在html表单上,我只想得到姓名和年份。用户不负责阶段的编号。添加时,它是一个序列号Php 如何在序列中的同一插入上插入序列号?,php,mysql,insert,Php,Mysql,Insert,如何在表中插入一个数字,即来自同一FK的记录数加1 解释: 有一个表格可容纳相位数(1,2,3…)。 当创建一个新的阶段时,我想将列编号设置为已经存在的阶段编号的总和 我试着用COUNT 在平面图204上,将有3个相位。 在html表单上,我只想得到姓名和年份。用户不负责阶段的编号。添加时,它是一个序列号 INSERT INTO phase ( idPlan, name, number, constructionY
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
嗨,雷南,这有用吗?如果没有,您能否提供更多信息来帮助解决问题?