如何在mysql中更新子表
我这里有一个示例表。如何在mysql中更新子表,mysql,Mysql,我这里有一个示例表。事件表 +-------------+----------------------+ | incident_id | incident_description | +-------------+----------------------+ | 1 | Accident | | 2 | Homicide | | 3 | Theft | +-
事件表
+-------------+----------------------+
| incident_id | incident_description |
+-------------+----------------------+
| 1 | Accident |
| 2 | Homicide |
| 3 | Theft |
+-------------+----------------------+
事件详细信息表:
+--------------------+-------------+-------------+
| 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 |
+--------------------+-------------+-------------+
我提供了一个类似网格视图的视图,允许用户删除和添加事件详细信息表中的项目。我的问题是,如何更新事件详细信息表?我可以添加新项目,但删除。我不知道。我应该清空整个表并插入用户添加的新项吗。但这里的问题是,未删除的现有项目将被删除并再次插入。如果您不关心
事件详细信息\u id
列的增量超过需要,则可以简单地删除并重新插入记录,而不管您是否更改了事件的详细信息
它使SQL代码变得更简单,但它确实意味着每次编辑时,您的ID都会上升。假设你是自动递增的
将详细信息添加到凶杀案后,您将得到:
+--------------------+-------------+-------------+
| 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);
您可以在插入之前检查项目是否存在,或者是否必须删除项目。谢谢我试试看,事情是这样的。我担心自动增量列是否会因为持续更新而飙升如此之高。它是什么数据类型?int sir。这就是为什么我要求另一种选择。事实上我就是这么做的,但是当我看到自动增量列时,我惊慌失措。你必须走很长的路才能最大化!有符号整数为2147483647,无符号整数为4294967295。