0

我正在开发一个带有可拖动框的小脚本并将它们的位置保存在 MySQL 表中。但我有一个小问题。我不知道如何编写用于删除和添加新框的 SQL 查询。假设我们有这样的表:

-----------------------------------
|   id    |  position  |  title   |
-----------------------------------
|   23    |    1       | something|
|   24    |    2       | something|
|   26    |    3       | sometging|
|   32    |    4       | something|
.............etc...................
-----------------------------------

ID 是盒子的 ID(盒子的唯一编号)。位置是布局中每个框的位置,标题是标题(简单):) 我不知道如何查询添加/删除框并更改“位置”列中的所有行,在新行或删除行之后。

假设我想删除 ID=24 的框。这是更改后的表格:

-----------------------------------
|   id    |  position  |  title   |
-----------------------------------
|   23    |    1       | something|
|   26    |    2       | sometging|
|   32    |    3       | something|
.............etc...................
-----------------------------------

这是我在表格中添加新框时的表格。(新盒子的 ID=10)

-----------------------------------
|   id    |  position  |  title   |
-----------------------------------
|   10    |    1       | something|
|   23    |    2       | something|
|   24    |    3       | something|
|   26    |    4       | sometging|
|   32    |    5       | something|
.............etc...................
-----------------------------------

如何编写查询以从表中添加和删除框?

PS我的英语真的很糟糕,希望你能理解我,并为我的问题提供解决方案。

干杯

4

2 回答 2

0

我了解到您想在插入或删除行时更新位置。我对么 ?

为此,您可以使用触发器同时执行这两个操作。并非所有版本的 MySQL 都支持触发器,因此您必须检查您的 MySQL 文档。

否则,您将不得不在代码中使用多个查询:至少一个用于在插入/删除之前更新您的表,另一个用于插入/删除。

例如:如果 1 是您的新行的位置:

UPDATE my_tbl SET position = position + 1 where position >= 1
INSERT INTO my_tbl (id, position, title) VALUES (10, 1, 'something')

或者:如果 2 是已删除行的实际位置:

UPDATE my_tbl SET position = position - 1 where position > 2
DELETE FROM my_tbl where id = 24

当然,WHERE 子句将取决于您的规范。

但是:如果您的表在位置字段上具有唯一索引,则应做更多工作以一致地处理您的数据...

于 2013-05-17T12:58:43.610 回答
0

就像这个兄弟 1. insert into box (id,position,title) values('99','12','something') ; 2. 插入框值('99','12','something') ; 3.如果您使用自动增加字段为'ID'插入框(位置,标题)值('12','something'); db 将为你分配新的 id。你最好参考 www.w3schools.com

玩得开心

于 2013-05-17T12:52:07.147 回答