2009-10-04 2 views
1

대부분의 SQL Server 소프트웨어는 "가입 업데이트"를 할 수 있다는 것을 알고 있지만 궁금한 점은 SQL 표준입니까? (예 : 모든 소프트웨어 패키지에서 허용하는 것으로 가정 할 수 있습니까?)SQL : 표준의 가입시 업데이트 하시겠습니까?

참고 : 원래 빌드에 포함되지 않은 데이터베이스 소프트웨어로 쉽게 확장 할 수 있어야하는 데이터베이스 라이브러리를 작성하고 있으므로이 질문을드립니다. 따라서 "a, b, c 및 b와 같은 발언으로 대답하는 것은 의미가 없습니다. 시장의 라이온 쉐어를 구성하기 때문에 모든 소프트웨어 패키지가이를 허용한다고 가정 할 수 있습니다." 아닙니다. 표준에 있는지 여부에 관심이 있습니다.

답변

1

ANSI SQL-92 표준에 따르면, JOIN 된 테이블에 대한 UPDATE는 표준의 일부가 아닙니다. http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt 섹션 13.9 및 13.10 (페이지 번호 391을 검색해야 함)을 참조하십시오.

나는 ANSI 2003 표준을 찾으려고 노력했지만 가장 가까운 곳은 www.wiscorp.com/sql_2003_standard.zip (후기 초안)이었다. UPDATE 문과 JOIN 구문과 관련하여이 둘 사이에는 큰 차이가 없었습니다.

스투

2

당신은 모든 소프트웨어 패키지가 ANSI SQL 표준을 준수하고 있다고 가정하고 있습니다 ..... 현실에서는 내가 알고있는 그 어떤 것도 표준에 완전히 부합하지 않습니다.

ANSI SQL 표준을 따르려면 먼저 문서화 된 표준을 사용하는 것이 가장 좋습니다. 다음은 SQL-92 문서입니다 :

http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt

+0

나는 그 인상을 받고 있지 않습니다. 널리 사용되는 모든 소프트웨어가이 기능을 제공한다는 것을 알고 있습니다. 그 외에도 표준에 포함되어 있다면 사용할 수 있으므로 표준을 충분히 지원하는 SQL 소프트웨어를 지원할 수 있습니다. 함수가 표준에있는 동안 함수를 지원하지 않으면 함수가 좋지 않습니다. 표준에 있지 않다면 다른 이야기입니다. 이 경우 나는 대기업이 만든 함수와 일부 다른 함수를 사용했다. 그 이유 때문에 나는 따르지 않은 SQL 소프트웨어를 지원할 수 없을 것이다. – Jasper

+0

링크를 제공해 주셔서 감사합니다. 나는 그것을 통해 살펴볼 것입니다. 당신이 찾고있는 것을 찾는 것은 고통이지만, 누군가가 알게된다면 그것은 여전히 ​​인정 될 것입니다. – Jasper

3

내가 질문을 이해한다면 바로, 나는 표준 "조인에 따라 업데이트가"없다, 대답은 '아니오'라고 생각한다.

이 명령은 제외하고, 표준 SQL에 따르는 FROM 돌아 오는 절은 PostgreSQL의 확장과 같습니다 postgres manual page for UPDATE는 "호환성"이 아래를 포함합니다.

이 명시 적으로 매뉴얼의 호환성 노트는 일반적으로 표준 관련,하지만 동일하지, 기능이있는 경우주의, 이없는 말을하지 않지만.

2

조심하세요, 여러분. 진정한 이식성있는 코드를 작성하는 것은 상상하는 것보다 훨씬 어려우며 성능, 코딩/유지 보수 용이성 및 가독성 측면에서도 많은 것을 기꺼이 포기해야합니다. 선언하고 SQL Server에서 하나의 변수를 사용하면 코드가 더 이상 진정으로 이식 가능하지 않습니다. 감사 트리거를 작성하면 트리거가 Oracle, SQL Server 및 다른 여러 인기있는 엔진 사이에서 이식 가능하지 않음을 보증 할 수 있습니다. 그리고 그것은 정말로 중요합니다. RDBMS에서 실제로 로켓 과학이 아니기 때문입니다. (물론 MERGE를 사용하지 않고 오라클에 UPDATE를 작성한 경우는 제외하고 (아직 표준이지만 휴대용은 아닙니다)).

또한 두 가지 기본 유형의 SQL이 있음을 잊지 마십시오. 대부분의 프론트 엔드 코드와 배치 코드의 단일 행을 지원합니다. 배치 코드가 제대로 작동하게하려면 사용중인 데이터베이스 엔진에 많은 "독점 확장"을 사용하여 밤새 수십억 개의 행을 효율적으로 처리해야합니다. 같은 날 밤. ;-)

"진정한"이식성을위한 코드 작성을 목표로 할 때주의하십시오. 당신은 당신이 상상했던 것보다 훨씬 느린 얽힌 엉망으로 끝날 수도 있습니다.

관련 문제