在MySQL中移动和删除行

时间:2009-12-13 12:21:48

标签: sql mysql

我在MySQL中创建了两个名为“birthTable”和“deathTable”的表。当我在deathTable中添加一个他/她出生的人时,我想从出生时删除他/她的姓名和家庭,因为我将他/她添加到deathTable中。但我不知道我怎么能这样做?

5 个答案:

答案 0 :(得分:15)

您描述的内容可以手动完成或使用触发器完成,但通常您不应该这样做。

你应该有一个名为people的表,然后简单地将它们标记为死或活。相反,如果您打算存储此信息,也可以为他们的生日和死亡日创建两列。

一般情况下,您不应仅仅因为某些关于它们的属性发生了变化而移动记录。

答案 1 :(得分:4)

这是SQL:

DELETE FROM birthTable WHERE id = ...

其中id是某个识别字段的名称。

这是documentation for DELETE

答案 2 :(得分:2)

您需要做的是构建DELETE FROM - 查询。如果您只想从表中删除一行,则需要确保您为其提供的参数对于该行是唯一的。通常这是通过使用名为id的列来完成的。然后,知道id,你所要做的就是:

DELETE FROM table WHERE id=<your id>;

我认为在你的情况下,你可以只有一个名为“people”的表,以及一个布尔列“alive”,如果该人活着则为1,如果该人死亡则为0。

如果您仍想从birthTable中删除一行,假设您知道此人的姓名,则按以下方式执行:

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

我假设名字和姓氏的列名是firstName和lastName,你必须修改它以匹配你的列名。这将删除birthTable中与critera匹配的任何条目(如果你有2个人叫Alan Johnson,可能会超过一个)。

希望有所帮助。 :)

答案 3 :(得分: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;

答案 4 :(得分:0)

DELETE FROM birthTable WHERE id = xxx