2017-10-12 1 views
1

postgresRETURNING 절을 사용하여 삽입 된 기본 키를 반환 할 수 있습니다. 해당 기능을 비활성화 할 수 있습니까? 누군가가 RETURNING을 사용하여 삽입 된 ID를 가져 오려고하면 아무 것도 반환하지 않습니다. (공통 INSERT로) ?postgres에서 INSERT의 RETURNING을 비활성화합니다.

+0

질문에 대한 답변을 드릴 수 없지만 그 기능이 없다고 생각됩니다. 어쨌든 디자인을 사용하여 잘못된 트리를 만들 수 있습니다. 데이터베이스 기능을 작성하여 삽입을 수행하거나 미들웨어를 작성하여 사용자로부터 데이터베이스를 안전하게 보호 할 수 있습니다. – ldrg

+1

게시물을 파손하지 마십시오. – DJMcMayhem

답변

1

저는 INSERT 명령이 이것을 할 수 없다고 생각합니다.

일부 대안 :

  • REVOKE 사용자의 삽입 및 INSERT들을 "보안 DEFINER", 또는
  • 사용 열 수준의 권한을 가진 함수를 만들 : 여기 INSERT 명령의 설명서 :

    RETURNING 절을 사용하려면 RETURNING에서 언급 한 모든 열에 대해 SELECT 권한이 필요합니다. 쿼리 절을 사용하여 쿼리의 행을 삽입하는 경우 물론 쿼리에 사용 된 테이블이나 열에 대해서는 SELECT 권한이 있어야합니다.

UPDATE : 열 수준의 권한으로는 적어도 두 가지 않습니다

  • 이 열 선택을 취소은 : testuser를
  • 로부터 표 testtable ON SELECT (restricted_col1를, ...) REVOKE
  • INSERT 열을 취소합니다. REVOKE INSERT (restricted_col1, ...) ON TABLE testtable FROM testuser. 이 경우 restricted_col1은 DEFAULT 값을 가져야하며 NOT NULL 제약 조건을 적용 할 수 없습니다.
+0

정확 : SELECT를 적절하게 취소합니다. –