복붙노트

[SQL] H2 데이터베이스 열 이름 "그룹은"예약 된 단어입니다

SQL

H2 데이터베이스 열 이름 "그룹은"예약 된 단어입니다

어떻게 열 이름을 GROUP과 H2의 테이블을 만들려면 어떻게해야합니까? 그 [*]는 같이 사용 무언가 얼마 전에 예를 보았다,하지만 난 그것을 찾을 수 없습니다.

해결법

  1. ==============================

    1.뒤에 밑줄을 추가 GROUP_를

    뒤에 밑줄을 추가 GROUP_를

    어떤 키워드가 이제까지 뒤에 밑줄이없는 것이라는 SQL 사양은 명시 적으로 약속 †. 당신이 보장된다 그래서 어떤 당신이 선행 또는 후행 밑줄로 만들 명명 것이다 결코에서 충돌 키워드 또는 예약 된 단어.

    나는 뒤에 밑줄 데이터베이스 등 내 모든 열, 제약, 이름을 지정합니다. 처음에는 조금 이상한 것 같다,하지만 당신은 그것을보고 익숙해. 알고 보니 좋은 부작용을 가지고 : 모든 프로그램뿐만 아니라 메모와 이메일, 난 프로그래밍 변수 또는 비즈니스 용어는 달리 문맥 데이터베이스 알고 밑줄 내가 후행를 볼 때.

    또 다른 장점은 마음의 평화이다. 이러한 구호 인해 키워드 충돌 가능한 버그와 이상한 문제의 전체 클래스를 제거합니다. 당신이 생각이 경우 "별거 - 몇 가지 SQL 키워드 암기 피하기 위해를 무슨"다시 생각하지 않습니다. 엄청나게 많은 키워드 및 예약어, 천 이상되는 엄청나게 많은 수 있습니다.

    시바에 의해 대답은 물론 올바른 : 이름, "그룹"주위에 따옴표를 추가, 문제를 해결한다. 단점은 그 따옴표를 추가 기억하는 것은 무심하고 귀찮은 될 것입니다.

    또한 팁 : 다양한 SQL 데이터베이스에서 최대의 호환성을 위해, 모두 소문자로 당신의 이름을. 는 SQL 사양은 모든 이름은 용납 소문자 동안 대문자로 저장해야한다고 말한다. 그러나 불행하게도 일부 (대부분?) 데이터베이스는 그 점에서 사양에 따라 실패합니다. 다양한 데이터베이스의 공부 시간 후, 나는 모든 소문자는 당신에게 최대 휴대 성을 제공한다는 결론을 내렸다.

    실제로 제안 그래서 당신은 당신의 열 이름 : GROUP_를

    여러 단어 이름은 다음과 같이 : given_name_ 및 date_of_first_contact_

    이 저작권이 보호이기 때문에 † 나는 불행하게도 SQL 사양을 인용 할 수 없다. 는 SQL에서 2011 사양, 그냥 작동 단어 밑줄 검색 제목 구문 규칙 항목 3 주 (111)에서 SQL-92 항을 참조 5.2, 항목 11에서 5.4 이름 및 식별자를 참조하십시오.

  2. ==============================

    2.당신과 같이 따옴표로 예약 된 단어 열 이름을 둘러싸고해야

    당신과 같이 따옴표로 예약 된 단어 열 이름을 둘러싸고해야

    "그룹"

    소스 (직접 링크) : h2database.com

  3. ==============================

    3.나는 한계라는 변수 이름을 사용하고 있었다 밝혀졌다 JPA에 의해 생성 된 SQL이 문제를 ... 떠올라 요.

    나는 한계라는 변수 이름을 사용하고 있었다 밝혀졌다 JPA에 의해 생성 된 SQL이 문제를 ... 떠올라 요.

    Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "CREATE TABLE EXPENSE_LIMIT (ID BIGINT NOT NULL, LIMIT[*] DECIMAL(19,2), ACCOUNT_ID BIGINT, EXPENSE_CATEGORY_ID BIGINT, PERIOD_ID BIGINT, PRIMARY KEY (ID)) "; expected "identifier"; SQL statement:
    

    어디 내 모델 클래스는 한계라는 필드를했다. 그건 그냥 바보 버그

  4. from https://stackoverflow.com/questions/19758467/h2-database-column-name-group-is-a-reserved-word by cc-by-sa and MIT license