是否可以删除行并返回已删除行的值?
示例
DELETE FROM table where time <= -1 week
SELECT all id that were deleted
答案 0 :(得分:3)
如果要控制数据库中的操作,可以考虑使用JOURNAL表。 SO中有一个问题here。
它们是一个镜像表,通常由执行操作的触发器填充(更新,删除)。它存储“旧值”(您可以随时从主表中获取的当前值)。
如果这样实施,您可以从日记帐表中选择并完全具备您需要的内容。
试着举个例子:
表USER
CREATE TABLE USER (
INT id,
VARCHAR name
)
表USER_JN
CREATE TABLE USER_JN (
INT id,
VARCHAR name,
VARCHAR operation
)
然后,对于每个操作,您可以填充USER_JN并具有所有更改的历史记录(您不应该在其中有约束)。
如果您删除,您的operation
列将具有delete
值,您可以使用您的选择来检查。
这并不完全是“选择已删除的行”,而是一种使其成为可能的方法。
希望它在某种程度上有用。
答案 1 :(得分:1)
SELECT id FROM table WHERE time&lt; = -1 week
然后简单地
DELETE FROM table WHERE time&lt; = -1 week