Permissions
相同的查詢,不同的結果(取決於使用者的權限)
一般關於SQL的問題:
如果兩個使用者執行相同的 sql 語句,是否可能 user1 與 user2 得到不同的結果?
想像一下 user1 比 user2 擁有更多的權限。
換句話說:user1 是否有可能收到 100 行,而 user2 只有 80?
我的問題是關於 SQL 標準的。
但是請隨意在評論中談論特定數據庫系統的實現。
如果兩個使用者執行相同的 sql 語句,是否可能 user1 與 user2 得到不同的結果?
是的,一點沒錯。
行級訪問控制允許數據庫管理員在表上放置“上下文”過濾器,以便不同的使用者確實看到不同的數據。
例如,使用者表可能受到保護,這樣人事部門的使用者可以看到所有人,但任何其他部門的任何人都只能看到同一部門的人。
SQL 標準沒有也不能規定從 SQL 數據庫返回或更新哪些數據;它是關於語言的語法和語義規則。一個合規的 DBMS 可以向同一個使用者返回不同的結果以響應同一個查詢,並且仍然保持合規。事實上,這種情況一直在發生——參見事務隔離級別。
相反(對不同查詢的響應結果相同)也是正確的——BLACKHOLE 儲存引擎不會使 MySQL 不符合標準(雖然不多,但仍然如此)。
換句話說,你的問題:
是否有可能 user1 收到 100 行,而 user2 只有 80?
完全超出了 SQL 標準的範圍,並且受制於單獨的 RDBMS 實現,正如其他人所提到的,這些實現可能具有允許這樣做的特定機制。