我有一个数据库,问题编号在 1 到 21 之间,都有答案/值等。但是我希望能够删除例如问题7。如果我删除其他数字之间的问题,问题编号将自动从 1-21 更改为 1-20,而不是 1-6、8-21。这可能吗?我尝试在网上搜索,但找不到我要找的东西。
带着亲切的问候,
如何缩短它?我知道它可以通过innerjoin完成,但我不知道如何正确使用它,因为我不清楚解释。
`$sql = "DELETE FROM insertquestion
WHERE nummer='".$questionNumber."'";
$deleteFromQuestion = $db->prepare($sql);
$deleteFromQuestion->execute();
$updateSql = "UPDATE insertquestion SET nummer = nummer - 1 WHERE nummer >= '".$questionNumber."'";
$updateSql = $db->prepare($updateSql);
$updateSql->execute();`
另一个时间,但随后用另一个表(vraag
)
您可以使用触发器执行此操作 ref:
http://www.mysqltutorial.org/mysql-triggers.aspx
或使用更新查询来设置值(但是,如果行数很大,则此方法成本很高)
Update table set q_no=q_no-1 where q_no> 5 //(if you delete a question with number 5)
此要求可能有很多方法。其中之一是您可以通过触发器实现它。编写一个删除后触发器,该触发器将更新表的所有问题编号。
CREATE TRIGGER tblquestion_delete AFTER DELETE on tblquestion
FOR EACH ROW
BEGIN
UPDATE tblquestion
SET qno = qno - 1
WHERE qno > old.qno;
END
另一种方法是您可以在删除查询后立即编写此查询。
$sql = "DELETE FROM insertquestion WHERE number='".$questionNumber."' ;
UPDATE tblquestion SET number = number - 1 WHERE number > '".$questionNumber."' ; ";