내가 postgres
내 첫 번째 테이블을 만들려고하지만, 오전을 만들어이 SQL 실행하면 : (포스트 그레스 테이블 오류
ERROR: relation "automated_group_msg_idx" does not exist
내가 postgres
내 첫 번째 테이블을 만들려고하지만, 오전을 만들어이 SQL 실행하면 : (포스트 그레스 테이블 오류
ERROR: relation "automated_group_msg_idx" does not exist
귀하의 오류가 있습니다 : 나는 다음과 같은 오류가
create table public.automated_group_msg (
automated_group_msg_idx integer NOT NULL DEFAULT nextval ('automated_group_msg_idx'::regclass),
group_idx integer NOT NULL,
template_idx integer NOT NULL,
CONSTRAINT automated_group_msg_pkey PRIMARY KEY (automated_group_msg_idx),
CONSTRAINT automated_group_msg_group_idx_fkey FOREIGN KEY (group_idx)
REFERENCES public.groups (group_idx) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT automated_msg_template_idx_fkey FOREIGN KEY (template_idx)
REFERENCES public.template (template_idx) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS = FALSE
);
을 왜냐하면 당신이 사용하려는 시퀀스가 아직 존재하지 않기 때문입니다.
그러나이 구문을 사용하여 즉석에서 시퀀스를 만들 수 있습니다
create table public.automated_group_msg (
id serial primary key,
... -- other columns
)
직접 질문과 관련,하지만 열 이름에 테이블 이름과 열 이름은 일반적으로 말하는되지 않음 반 패턴, 특히 id
이 업계 표준 인 기본 키의 경우. 또한 id 열이 항상 id
인 추상 클래스를 사용하여 앱 코드 리팩토링을 허용합니다. automated_group_msg.id
이 무엇을 의미하는지 명확하고, automated_group_msg.automated_group_msg_id
은 열차 잔해이며 여분의 정보가 포함되어 있습니다. customer.birth_date
과 같은 속성 열 이름도 동일한 이유로 customer.customer_birth_date
으로 장식하지 않아야합니다.
포스트 그레스 문서를보고 있으며 다음과 같은 직렬로 작동해야합니다. 실제로 내가 작업하고있는 데이터베이스를 찾고 있었고 스키마가 일부 테이블에 정의되어있는 방법을 알고 있었기 때문에 내가 작성한 방식이 구문 적으로 올바른 것으로 생각하십시오. – user8895989
@ user8895989 아니요 - 주로 부정확합니다. 포스트그레스에서 자동 증분은'sequence' 객체를 사용하여 구현됩니다. 시퀀스의 'nextval'을 참조하는 테이블 정의는 시퀀스 객체가 이미 생성되어 있어야합니다. 많은 SQL 객체 검사와 마찬가지로, 표시된 SQL은 DBA/dev가 원래 입력 한 SQL이 아닌 postgres의 내부 SQL 표현입니다. 그러나 수동으로 수행 할 때 어떤 이점도 없습니다. 단지'serial'의 편리한 구문을 사용하면 모든 것이 OK가됩니다. 시퀀스를 따로 정의하면 타이핑 연습을 제외하고는 아무런 이점이 없습니다. – Bohemian
고마워요, 이건 정말 도움이됩니다. 또한, 당신이 제안한 명명 규칙은 완전한 의미를가집니다, 그것은 잔인한 일이며 아마도 일이 더 혼란스럽게 만듭니다. 귀하의 놀라운 의견에 감사드립니다. – user8895989
'automated_group_msg_idx'를 자동 증가 ID로 지정 하시겠습니까? – Bohemian
예. 자동 증가 기본 키 – user8895989