是否可以在MySQL中使一行无效?那么这一行不再用于查询结果了?我的客户希望保留已删除的成员存在于数据库中,但我不想编辑所有查询以检查成员是否被删除.
或者有一种简单的方法可以将整个行数据移动到另一个"非活动"表中吗?
Bri*_*per 10
您可以重命名当前表,在其中创建"已删除"列,然后创建一个与当前表同名的视图,选择所有删除的值= 0.这样您就不必更改所有查询.如果为删除列提供默认值,则视图将可更新._
CREATE TABLE my_new_table (col1 INTEGER,
col2 INTEGER,
col3 INTEGER,
deleted INTEGER NOT NULL DEFAULT 0);
INSERT INTO my_new_table (col1, col2, col3)
SELECT (col1, col2, col3)
FROM my_table;
DROP TABLE my_table;
CREATE VIEW my_table (col1, col2, col3)
AS SELECT (col1, col2, col3)
FROM my_new_table
WHERE deleted = 0;
Run Code Online (Sandbox Code Playgroud)
您描述的内容通常称为软删除.
在关系数据库中,在不同表之间移动行很少是个好主意.一般情况下,您不应仅仅因为某些关于它们的属性发生了变化而移动记录(在这种情况下,"不活动"只是一个属性).
我会inactive在表中添加一个字段,0如果该行处于活动状态,则将其设置为" 1无效".然而,你将不得不通过增加过滤掉所有的疑问不活动的行WHERE inactive = 0中的WHERE条款.另一种方法是使用视图,正如@Brian在其他答案中建议的那样,我建议使用.
| 归档时间: |
|
| 查看次数: |
2234 次 |
| 最近记录: |