在 DB2 :: 行级安全性是否适用于外键

问题描述 投票:0回答:1

授予表上的行级访问权限时,会自动应用于外键,并且在授予列级访问权限时同样适用。

我还不能尝试。但是在学习手册时我没有看到这个解释。

db2
1个回答
0
投票

这取决于您所说的“适用”。
将行权限视为 WHERE 子句中的附加过滤器。
看下面的例子。

CREATE TABLE TEST_P (P_ID INT NOT NULL PRIMARY KEY);
CREATE TABLE TEST_C 
(
  P_ID INT NOT NULL
, CONSTRAINT TEST_C_FK FOREIGN KEY (P_ID) REFERENCES TEST_P (P_ID)
);
INSERT INTO TEST_P VALUES 1;
INSERT INTO TEST_C VALUES 1;

-- Nobody can get any row from the parent table.
CREATE PERMISSION TEST_P1 ON TEST_P FOR ROWS WHERE FALSE ENFORCED FOR ALL ACCESS ENABLE;
ALTER TABLE TEST_P ACTIVATE ROW ACCESS CONTROL;

-- No rows are visible in the parent table
SELECT * FROM TEST_P;

-- But you can see the corresponding row in the child table 
-- and even get an "impossible" situation: a child row without a parent one
SELECT * FROM TEST_C 
WHERE NOT EXISTS (SELECT 1 FROM TEST_P WHERE TEST_P.P_ID = TEST_C.P_ID);

|P_ID|
|----|
|1   |
© www.soinside.com 2019 - 2024. All rights reserved.