2016-02-25 15 views
0

我這裏有一個示例表。

事件表如何更新mysql中的子表

+-------------+----------------------+ 
| 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

哦。謝謝。我會嘗試的。 –

回答

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); 
+0

事情是。我擔心如果auto_increment列會因爲持續更新而飆升得如此之高。 –

+0

它是什麼數據類型? –

+0

int先生。這就是爲什麼我要求替代方案。其實這就是我所做的,但是當我看到auto_increment列時,我驚慌失措。 –