2009-12-13 62 views
0

我在MySQL中創建了兩個名爲「birthTable」和「deathTable」的表。當我添加一個人在他/她出生時的deathTable中時,我想從出生表中刪除他/她的姓名和家庭,因爲我將他/她添加到deathTable中。但我不知道我該怎麼做?在MySQL中移動和刪除行

+2

我希望你添加到deathTable的人已經死了:) – 2009-12-13 12:32:05

+1

你爲什麼不使用單一的「人」表,添加布爾列「is_dead」? – knoopx 2009-12-16 10:09:20

回答

2

你需要做的是構造一個DELETE FROM-查詢。如果您只想從表格中刪除一行,則需要確保您提供的參數對於該行是唯一的。通常這是通過一個名爲id的列完成的。然後,知道ID,所有你需要做的是這樣的:

DELETE FROM table WHERE id=<your id>; 

我認爲你的情況,你可能只是有一個叫做「人」表,和一個布爾列「活着」,這是1,如果如果這個人已經死了,那麼這個人是活的,而且是0

如果你仍然想從你birthTable刪除一行,假設你知道這個人的名字,你做這樣的:

DELETE FROM birthTable WHERE firstName=<first name> AND lastName<last name>; 

我認爲對於姓氏和列名名字是firstName和lastName,你必須修改它以匹配你的列名。這將刪除與critera相匹配的birthTable中的任何條目(如果您有例如2個人稱爲Alan Johnson,則可能不止一個)。

希望有所幫助。 :)

1

您可以在表deathTable上的插入上寫入觸發器,它從birthTable刪除對應的行。

CREATE TRIGGER trg_deathTable_insert 
    BEFORE INSERT ON deathTable 
    FOR EACH ROWS 
BEGIN 
    DELETE FROM birthTable WHERE person_id = NEW.person_id; 
END; 
+0

這裏沒有必要使用觸發器......並且按id刪除可能是錯誤的,如果id是自動增量的 – knoopx 2009-12-16 10:11:19

+0

「如果id是自動增量,則可能是錯誤的」 「請解釋它爲什麼錯了? – 2009-12-16 20:03:03

15

您描述的內容可以手動完成,也可以通過觸發器完成,但通常不應該這樣做。

你應該有一張名爲people的表格,然後簡單地將它們標記爲死或活。相反,如果您打算存儲此信息,則也可以爲其生日和死日創建兩列。

通常,您不應該僅僅因爲關於它們的某些屬性發生了變化而移動記錄。

+2

從技術上講,你所說的一切都是正確的(我同意你的觀點),但是你在這裏所說的沒有回答這個問題,或者有助於解決OP的直接問題。 – 2009-12-13 15:43:36

+1

這是一個試圖指導OP更好的解決方案。 – 2009-12-13 15:45:51

+3

回答問題的最佳方法是幫助OP解決問題,而不是解決他的問題。 +1 – erikkallen 2009-12-13 15:49:15

0
DELETE FROM birthTable WHERE id = xxx