我这里有一个示例表。
事件表
+-------------+----------------------+
| incident_id | incident_description |
+-------------+----------------------+
| 1 | Accident |
| 2 | Homicide |
| 3 | Theft |
+-------------+----------------------+
incident_detail表:
+--------------------+-------------+-------------+
| incident_detail_id | person_name | incident_id |
+--------------------+-------------+-------------+
| 1 | errol | 1 |
| 2 | neo | 1 |
| 3 | aj | 1 |
| 4 | mark | 2 |
| 5 | calma | 2 |
| 6 | allan | 2 |
| 7 | dave | 3 |
| 8 | paul | 3 |
+--------------------+-------------+-------------+
我提供了一个类似于视图的网格视图,允许用户删除和添加incident_detail表中的项目。我的问题是,如何更新incident_detail表?我可以添加新项目,但删除。我不知道。我应该清空整个表并插入用户添加的新项目。但问题是,未删除的现有项目将被删除并再次插入。
答案 0 :(得分:0)
如果您不关心incident_detail_id
列的增量超出其需要,您可以简单地删除并重新插入记录,无论您是否更改了事件的详细信息。
它使SQL代码更容易,但它确实意味着每次编辑时你的ID都会上升。假设你是自动递增的。
向Homicide
添加详细信息后,您最终会得到:
+--------------------+-------------+-------------+
| incident_detail_id | person_name | incident_id |
+--------------------+-------------+-------------+
| 1 | errol | 1 |
| 2 | neo | 1 |
| 3 | aj | 1 |
| 9 | mark | 2 |
| 10 | calma | 2 |
| 11 | allan | 2 |
| 12 | new | 2 |
| 7 | dave | 3 |
| 8 | paul | 3 |
+--------------------+-------------+-------------+
如果你对此感到满意:
DELETE FROM incident_detail WHERE incident_id = 2;
INSERT INTO incident_detail (person_name, incident_id)
VALUES
('mark', 2)
('calma', 2)
('allan', 2)
('new', 2);