在MySQL中移动和删除行

在MySQL中移动和删除行,sql,mysql,Sql,Mysql,我在MySQL中创建了两个表,分别称为“诞生表”和“死亡表”。当我在临终表中添加一个人时,她/他在出生表中,我想从出生表中删除他/她的姓名和家庭,因为我在临终表中添加了他/她。但我不知道如何才能做到这一点?您可以在表死亡表上的insert上编写触发器,从而从出生表中删除相应的行 CREATE TRIGGER trg_deathTable_insert BEFORE INSERT ON deathTable FOR EACH ROWS BEGIN DELETE FROM b

我在MySQL中创建了两个表,分别称为“诞生表”和“死亡表”。当我在临终表中添加一个人时,她/他在出生表中,我想从出生表中删除他/她的姓名和家庭,因为我在临终表中添加了他/她。但我不知道如何才能做到这一点?

您可以在表
死亡表
上的insert上编写触发器,从而从
出生表中删除相应的行

CREATE TRIGGER trg_deathTable_insert
    BEFORE INSERT ON deathTable
    FOR EACH ROWS
BEGIN
    DELETE FROM birthTable WHERE person_id = NEW.person_id;
END;
这是SQL:

DELETE FROM birthTable WHERE id = ...
其中,
id
是某个标识字段的名称


以下是您描述的可以手动或使用触发器完成的操作,但通常不应该这样做

你应该有一张名为“人”的桌子,然后简单地将他们标记为“死”或“活”。相反,如果要存储此信息,还可以为其生日和死亡日创建两列


一般来说,您不应该仅仅因为记录的某些属性已更改而移动记录。

您需要做的是构造一个
-DELETE查询。如果只想从表中删除一行,则需要确保为该行指定的参数是唯一的。通常这是通过一个名为
id
的列来实现的。然后,知道id后,您所要做的就是:

DELETE FROM table WHERE id=<your id>;
从id=的表中删除;
我认为在你的例子中,你可以有一个名为“people”的表和一个布尔列“alive”,如果人活着,它是1,如果人死了,它是0

如果您仍然想从出生表中删除一行,假设您知道此人的姓名,则可以这样做:

DELETE FROM birthTable WHERE firstName=<first name> AND lastName<last name>;
从firstName=和lastName的出生表中删除;
我假设名字和姓氏的列名是firstName和lastName,您必须修改它以匹配列名。这将删除出生表中与该标准匹配的任何条目(可能不止一个,如果您有两个叫Alan Johnson的人)


希望有帮助。:)

我希望你添加到死亡表中的人已经死了:)为什么不使用一个“人”表并添加布尔列“is_dead”?从技术上讲,你所说的一切都是正确的(我同意你的看法),但你在这里所说的都不能回答问题,也不能帮助OP解决眼前的问题。这是试图引导OP找到更好的解决方案。回答问题的最佳方式是帮助OP解决问题,而不是帮助OP解决问题+1您的总体解决方案无疑更好。但是当我看到像“我怎么做X”这样的问题时,我不喜欢看到像“你不想做X,你想做Y”这样的答案。Johanna问“我怎么删除一行”,看完你的答案后,她仍然不知道如何删除一行。@Graeme:我明白你的意思,但我不能同意。。。“这么辛苦,挖了这么长时间,却发现你挖错了地方。”我宁愿指向正确的地方,而不是提供更大的铲子。这里不需要触发器。。。如果id是自动增量的,则按id删除可能是错误的“如果id是自动增量的,则按id删除可能是错误的”您能解释一下为什么它是错误的吗?
DELETE FROM birthTable WHERE id = xxx