2012-10-26 26 views
0

我想我知道這個答案,但我想問問社區。MySQL可以執行全局WHERE子句和/或它們是否存在?

試想兩個表:

表A

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 isActive = 1」 的條件,每個連接和每一個where子句。和其他許多人一樣,我們不喜歡刪除記錄的想法。但是,爲每個查詢添加「WHERE isActive = 1」非常繁瑣和重複。

所以,問題是:

我可以強制執行這種對我的數據庫所做的所有查詢「全球狀況」?有沒有人想知道這件事?

+1

這可能是一個VIEW。在Oracle中,這是一個行級安全謂詞(可能)。或者使用觸發器將非活動行移動到歸檔表。 – Randy

回答

2

您可以通過創建VIEW來模擬「全局條件」,但除此之外... MySQL中沒有這樣的事情。

相關問題