【发布时间】:2017-02-25 05:32:33
【问题描述】:
是否可以删除一行并返回已删除行的值?
示例
DELETE FROM table where time <= -1 week
SELECT all id that were deleted
【问题讨论】:
-
@bishop 感谢 bud,但看起来它只适用于最后删除的行
是否可以删除一行并返回已删除行的值?
示例
DELETE FROM table where time <= -1 week
SELECT all id that were deleted
【问题讨论】:
如果你想控制数据库中的操作,你可以考虑使用 JOURNAL 表。 SO中有一个关于此的问题here。
它们是一个镜像表,通常由执行操作(更新、删除)的触发器填充。它存储“旧值”(您始终可以从主表中获取的当前值)。
如果这样实施,您就可以从日志表中 SELECT 并获得您所需要的。
试着给你举个例子:
表用户
CREATE TABLE USER (
INT id,
VARCHAR name
)
表 USER_JN
CREATE TABLE USER_JN (
INT id,
VARCHAR name,
VARCHAR operation
)
然后,对于每个操作,您都可以填充 USER_JN 并拥有所有更改的历史记录(其中不应有约束)。
如果您删除,您的 operation 列将具有 delete 值,您可以使用您的选择进行检查。
这并不完全是“选择删除的行”,而是一种使其成为可能的方法。
希望对你有用。
【讨论】:
我不会搜索非索引列两次。您应该使用如下变量:
SELECT id INTO @tID FROM table WHERE time
从表中删除 id = @tID
然后您可以随意使用变量@tID。
【讨论】: