เชจเชพ เชชเซเชฐเช เชคเชฐเซเชเซ
เชธเซเชฆเซเชงเชพเชเชคเชฟเช เชญเชพเช เชฆเชธเซเชคเชพเชตเซเชเซเชเชฐเชฃเชฎเชพเช เชธเชพเชฐเซ เชฐเซเชคเซ เชตเชฐเซเชฃเชตเซเชฒ เชเซ
เชฒเซเชเชฎเชพเช เชเชเช เชจเชตเซเช เชจเชฅเซ, เชเซเช เชเซเชชเชพเชฏเซเชฒ เช เชฐเซเชฅ เชเซ เชเซเชชเซเชค เชเซเชเชพเชจ เชจเชฅเซ. เชธเซเชฆเซเชงเชพเชเชคเชฟเช เชตเชฟเชเชพเชฐเชจเชพ เชตเซเชฏเชตเชนเชพเชฐเชฟเช เช เชฎเชฒเซเชเชฐเชฃ เชตเชฟเชถเซ เชฎเชพเชคเซเชฐ เชเช เชธเซเชเซเช. เชเซ เชเซเชเชจเซ เชฐเชธ เชนเซเชฏ เชคเซ เชตเชพเชเชเซ. เชเซ เชคเชฎเชจเซ เชฐเชธ เชจเชฅเซ, เชคเซ เชคเชฎเชพเชฐเซ เชธเชฎเชฏ เชฌเชเชพเชกเซ เชจเชนเซเช.
เชธเชฎเชธเซเชฏเชพเชจเซ เชฐเชเชจเชพ
เชตเชฟเชทเชฏเชจเชพ เชเซเชทเซเชคเซเชฐเชฎเชพเช เชเชเชกเชพเชฃเชชเซเชฐเซเชตเช เชกเชพเชเชต เชเชฐเซเชฏเชพ เชตเชฟเชจเชพ, เชธเชเชเซเชทเชฟเชชเซเชคเชฎเชพเช, เชธเชฎเชธเซเชฏเชพ เชจเซเชเซ เชชเซเชฐเชฎเชพเชฃเซ เชเชกเซ เชถเชเชพเชฏ เชเซ: เชคเซเชฏเชพเช เชเช เชเซเชฌเชฒ เชเซ เชเซ เชเซเชเซเชเชธ เชฌเชฟเชเชจเซเชธ เชเชจเซเชเชฟเชเซเชจเซ เช เชฎเชฒ เชเชฐเซ เชเซ. เชเซเชทเซเชเชเชฎเชพเชเชจเซ เชชเชเชเซเชคเชฟเช เชเชพเชขเซ เชถเชเชพเชฏ เชเซ, เชชเชฐเชเชคเซ เชชเชเชเซเชคเชฟเช เชญเซเชคเชฟเช เชฐเซเชคเซ เชเชพเชขเซ เชถเชเชพเชคเซ เชจเชฅเซ; เชคเซ เชเซเชชเชพเชฏเซเชฒเซ เชนเซเชตเซ เชเชตเชถเซเชฏเช เชเซ.
เชเชพเชฐเชฃ เชเซ เชคเซ เชเชนเซเชตเชพเชฎเชพเช เชเชตเซ เชเซ: "เชเชเชเชชเชฃ เชเชพเชขเซ เชจเชพเชเชถเซ เชจเชนเซเช, เชซเชเซเชค เชคเซเชจเซเช เชจเชพเชฎ เชฌเชฆเชฒเซ. เชเชจเซเชเชฐเชจเซเช เชฌเชงเซเช เชธเซเชเซเชฐ เชเชฐเซ เชเซ"
เชฐเชธเซเชคเชพเชฎเชพเช, เช เชเชจเซเชเชฟเชเซ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชคเชพ เชนเชพเชฒเชจเชพ เชธเชเชเซเชฐเชนเชฟเชค เชเชพเชฐเซเชฏเซเชจเซ เชซเชฐเซเชฅเซ เชฒเชเชตเชพเชจเซ เชธเชฒเชพเชน เชเชชเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เช เชเซเชฏเชพเชฒเชจเซ เช เชฎเชฒเชฎเชพเช เชฎเซเชเชตเชพ เชฎเชพเชเซ, เชเซเชทเซเชเชเชฎเชพเช เชตเชฟเชถเซเชทเชคเชพ เชเซ เชเชพเชขเซ เชจเชพเชเซเชฒ เชเซ. เชชเชเซ เชฌเชงเซเช เชธเชฐเชณ เชเซ - เชคเชฎเชพเชฐเซ เชเชพเชคเชฐเซ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชเซ เชเซเชฒเชพเชฏเชเช เชซเชเซเชค เชคเซ เช เชฐเซเชเชพเช เชเซเช เชถเชเซ เชเซ เชเซเชฎเชพเช เชฒเชเซเชทเชฃ เชเซ เชเชพเชขเซ เชจเชพเชเซเชฒ เชเซ เชเซเชเซเช เชฎเชฟเชเซเชจเชฟเชเชฎ เชถเซเชจเชพ เชฎเชพเชเซ เชตเชชเชฐเชพเชฏ เชเซ? เชชเชเชเซเชคเชฟ เชธเซเชคเชฐ เชธเซเชฐเชเซเชทเชพ.
ะ ะตะฐะปะธะทะฐัะธั
เชเช เช เชฒเช เชญเซเชฎเชฟเชเชพ เช เชจเซ เชธเซเชเซเชฎเชพ เชฌเชจเชพเชตเซ
CREATE ROLE repos;
CREATE SCHEMA repos;
เชฒเชเซเชทเซเชฏ เชเซเชฌเชฒ เชฌเชจเชพเชตเซ
CREATE TABLE repos.file
(
...
is_del BOOLEAN DEFAULT FALSE
);
CREATE SCHEMA repos
เชเชพเชฒเซ เชเชฐเซ เชชเชเชเซเชคเชฟ เชธเซเชคเชฐ เชธเซเชฐเชเซเชทเชพ
ALTER TABLE repos.file ENABLE ROW LEVEL SECURITY ;
CREATE POLICY file_invisible_deleted ON repos.file FOR ALL TO dba_role USING ( NOT is_deleted );
GRANT ALL ON TABLE repos.file to dba_role ;
GRANT USAGE ON SCHEMA repos TO dba_role ;
เชธเซเชตเชพ เชเชพเชฐเซเชฏ - เชเซเชทเซเชเชเชฎเชพเชเชฅเซ เชเช เชชเชเชเซเชคเชฟ เชเชพเชขเซ เชจเชพเชเชตเซเช
CREATE OR REPLACE repos.delete( curr_id repos.file.id%TYPE)
RETURNS integer AS $$
BEGIN
...
UPDATE repos.file
SET is_del = TRUE
WHERE id = curr_id ;
...
END
$$ LANGUAGE plpgsql SECURITY DEFINER;
เชตเซเชฏเชพเชชเชพเชฐ เชเชพเชฐเซเชฏ - เชฆเชธเซเชคเชพเชตเซเช เชเชพเชขเซ เชจเชพเชเชตเซเช
CREATE OR REPLACE business_functions.deleteDoc( doc_for_delete JSON )
RETURNS JSON AS $$
BEGIN
...
PERFORM repos.delete( doc_id ) ;
...
END
$$ LANGUAGE plpgsql SECURITY DEFINER;
เชฐเชฟเชเชฒเซเช
เชเซเชฒเชพเชฏเชเช เชฆเชธเซเชคเชพเชตเซเช เชเชพเชขเซ เชจเชพเชเซ เชเซ
SELECT business_functions.delCFile( (SELECT json_build_object( 'CId', 3 )) );
เชเชพเชขเซ เชจเชพเชเซเชฏเชพ เชชเชเซ, เชเซเชฒเชพเชฏเชเช เชฆเชธเซเชคเชพเชตเซเช เชเซเชคเซ เชจเชฅเซ
SELECT business_functions.getCFile"( (SELECT json_build_object( 'CId', 3 )) ) ;
-----------------
(0 rows)
เชชเชฐเชเชคเซ เชกเซเชเชพเชฌเซเชเชฎเชพเช เชฆเชธเซเชคเชพเชตเซเช เชเชพเชขเซ เชจเชพเชเชตเชพเชฎเชพเช เชเชตเชคเซ เชจเชฅเซ, เชฎเชพเชคเซเชฐ เชฒเชเซเชทเชฃ เชฌเชฆเชฒเชพเชฏ เชเซ is_del
psql -d my_db
SELECT id, name , is_del FROM repos.file ;
id | name | is_del
--+---------+------------
1 | test_1 | t
(1 row)
เชเซ เชธเชฎเชธเซเชฏเชพ เชจเชฟเชตเซเชฆเชจเชฎเชพเช เชเชฐเซเชฐเซ เชนเชคเซเช.
เชชเชฐเชฟเชฃเชพเชฎ
เชเซ เชตเชฟเชทเชฏ เชฐเชธเชชเซเชฐเชฆ เชเซ, เชคเซ เชชเชเซเชจเชพ เช
เชญเซเชฏเชพเชธเชฎเชพเช เชคเชฎเซ เชฐเซ เชฒเซเชตเชฒ เชธเชฟเชเซเชฏเซเชฐเชฟเชเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชกเซเชเชพ เชเชเซเชธเซเชธเชจเซ เช
เชฒเช เชเชฐเชตเชพ เชฎเชพเชเซ เชฐเซเชฒ-เชเชงเชพเชฐเชฟเชค เชฎเซเชกเชฒเชจเชพ เช
เชฎเชฒเซเชเชฐเชฃเชจเซเช เชเชฆเชพเชนเชฐเชฃ เชฌเชคเชพเชตเซ เชถเชเซ เชเซ.
เชธเซเชฐเซเชธ: www.habr.com