SQL 표준에서 "하위 쿼리가있는 E153 업데이트 가능한 쿼리"란 무엇입니까?
-
19-09-2019 - |
해결책
방금 Wikipedia에서 업데이트의 왼쪽에서 선택한 것처럼 보이는이 Oracle 예제를 찾았습니다.
UPDATE (
SELECT *
FROM articles
JOIN classification c
ON a.articleID = c.articleID
) AS a
SET a.[updated_column] = updatevalue
WHERE c.classID = 1
대부분의 데이터베이스는 다음과 같이 쿼리를 작성해야합니다.
UPDATE a
SET a.[updated_column] = updatevalue
FROM articles a
JOIN classification c
ON a.articleID = c.articleID
WHERE c.classID = 1
다른 데이터베이스가 이것을 지원합니까? 어디에 문서화되어 있습니까?
이제 표준에 거친 장갑을 얹은 후에는 그냥 인용 할 것입니다.
E153은 다음을 말합니다.
7.12 항, "u003Cqueryn expression> ": ㅏu003Cquery expression> 그럼에도 불구하고 업데이트 가능합니다u003Cwheren clause> au003Csubquery>
쿼리 표현식도 테이블이기 때문에 (직관적이지는 않지만 테이블과 관련된 SQL99 4.16.3 작업)이므로 쿼리 표현식이 "udpatable 테이블"임을 의미합니다. 4.16에 따르면, 나는 그들에게 삽입하고 삭제할 수 있음을 의미합니다.
즉, 위의 것을 실행할 수 있습니다.
DELETE FROM (SELECT * FROM t1 JOIN t2 WHERE t1c1 = t2c3);
SQL99-Foundation 7.11 및 7.12에 포함 된 쿼리 표현식이 업데이트 될 수있는 규칙이 더 있습니다. 그들은 다소 관여합니다. PostgreSQL은 테이블 이름이 아닌 쿼리 표현식을 업데이트 할 수 없습니다. 업데이트 가능한 뷰에서 작업이 수행됩니다. 기능이보기 외부에 얼마나 유용한 지 잘 모르겠지만 표준은 확실히 흥미롭고 예상보다 더 이상합니다.
여기서 외로워요. 내 대답을 최선로 선택합니다.
제휴하지 않습니다 StackOverflow