source

"참조" 권한이 필요한 이유는 무엇입니까?

manycodes 2023. 7. 5. 20:50
반응형

"참조" 권한이 필요한 이유는 무엇입니까?

외부 키 제약 조건을 생성하려면<AuthorizationID>참조 테이블을 소유하는 것은 현재여야 합니다.<AuthorizationID>그리고 반드시 가지고 있어야 합니다.REFERENCES명명된 모든 참조 열에 대한 권한입니다.출처: https://mariadb.com/kb/en/constraint_type-foreign-key-constraint/

왜요?

참조 권한의 이유는 다른 테이블을 참조하는 테이블이 다른 테이블에 제약 조건을 부과하고 해당 다른 테이블의 소유자가 해당 제약 조건을 허용하지 않을 수 있기 때문입니다.

참조 권한이 없는 경우 어떤 일이 발생할 수 있는지 살펴보겠습니다.

CREATE TABLE Employees
(
    EmpID   INTEGER NOT NULL PRIMARY KEY,
    Name    VARCHAR(32) NOT NULL,
    …
);

INSERT INTO Employees VALUES (1, "Hernandez", …);

이제 Joe가 와서 테이블을 만듭니다.

CREATE TABLE EmployeeRefs
(
    EmpID INTEGER NOT NULL PRIMARY KEY REFERENCES Employees
);

INSERT INTO EmployeeRefs SELECT EmpID FROM Employees;

이제 HR 부서가 Hernandez를 다른 곳으로 보내주고 코드는 관련 EmpID가 1임을 알고 있다고 가정합니다.

DELETE FROM Employees WHERE EmpID = 1;

이 삭제는 실패합니다. 기본 키 값은 여전히 EmployeeRefs 테이블에서 참조되고 있습니다.

이것은 DBMS에 관한 한 발생해야 할 일입니다.Employee Ref의 값이 참조한다고 합니다.EmpID 열은 Employee의 값과 일치해야 합니다.EmpID 열, 그리고 그것이 에르난데스의 기록을 삭제한다면, 그것은 사실이 아닐 것이기 때문에, 삭제를 방지해야 합니다(조가 계단식 삭제를 설정하지 않았기 때문에).

DB에 테이블을 작성할 수 있는 권한을 가진 사용자가 HR 부서의 작업을 방해할 수 있다면 문제가 있음이 분명합니다.REFERENCES 권한이 부여된 경우에만 Joe가 Employee 테이블에 대한 참조를 생성할 수 있다고 말하면 문제가 해결됩니다.그리고 각 테이블의 소유자/작성자는 작성한 테이블에 대한 REFERENCE 권한을 가진 사용자를 선택할 수 있습니다.

언급URL : https://stackoverflow.com/questions/22110325/why-is-a-references-privilege-required

반응형