MySQL能否强制执行全局WHERE子句和/或它们是否存在?
我想我知道这个问题的答案,但我想问问社区 想象两张桌子: 表MySQL能否强制执行全局WHERE子句和/或它们是否存在?,mysql,Mysql,我想我知道这个问题的答案,但我想问问社区 想象两张桌子: 表 ID | Col1 | isActive 1 "Some Data1" 1 2 "Some Data2" 1 3 "Some Data3" 0 4 "Some Data4" 1 表B ID | TableA_ID | isActive 1 1 1 4
ID | Col1 | isActive
1 "Some Data1" 1
2 "Some Data2" 1
3 "Some Data3" 0
4 "Some Data4" 1
表B
ID | TableA_ID | isActive
1 1 1
4 1 1
7 3 1
8 4 1
以及以下查询:
SELECT A.COL1
FROM TableB as B
JOIN TableA as A
ON A.ID = B.TableA_ID
WHERE b.ID in (1,4,7);
将返回以下结果:
Col1
"Some Data1"
"Some Data1"
"Some Data3"
但我想要的是:
Col1
"Some Data1"
"Some Data1"
我不想在每个连接和每个WHERE子句中添加“WHERE isActive=1”条件。像许多其他人一样,我们不喜欢删除记录的想法。但是,在每个查询中添加“WHERE isActive=1”是非常繁琐和重复的
因此,问题是:
我可以在对数据库的所有查询上强制执行这种“全局条件”吗?还有人对此感到好奇吗?你可以通过创建一个模型来模拟“全局条件”,但除此之外。。。MySQL中没有这样的东西。这可能是一个视图。在Oracle中,这是一个行级安全谓词(可能)。或者使用触发器将非活动行移动到存档表中。