레일스 프로젝트에 기본 표현식이있는 레거시 테이블이 있습니다. 이 표현식은 임의의 4 자리 숫자를 선택하고이를 문자열로 변환합니다. 내 테스트를하는 동안 나는 기본 표현 설정 psql의에이 정확한 문장을 입력 한 :열의 기본 기능을 설정할 때 Postgres가 첫 번째 함수 식별자를 이중 인용 부호로 묶는 이유는 무엇입니까?
default "substring"(to_char(((random() * ((10000 - 1))::double
precision) + (1)::double precision), '0000'::text), '....$'::text)
주의 사항 : 포스트 그레스가 정한대로 내가 \d owners
이 작업을 수행 할 때 다음
alter table owners alter column signing_code set default
substring(to_char(((random() * ((10000 - 1))::double precision) +
(1)::double precision), '0000'::text), '....$'::text);
입니다 나의 실제 기본 표현이다 첫 번째 함수 식별자 substring
주위의 큰 따옴표 이 레일 스키마 덤프 /로드 두 가지 문제가 발생합니다
- 이/schema.rb을 dB로 스키마를 덤핑, 따옴표가 올바르게하여 따옴표를 탈출해도
- 탈출하지 않기 때문에 유효하지 않은 루비가 생산된다 스키마를 데이터베이스로 다시로드 할 때 Rails가 표현식이 아닌 표현식이 아닌 기본 문자열 값으로 잘못 표현됩니다 (즉, 작은 따옴표로 표현식을 둘러 쌉니다).
Postgres를 얻는 방법이 있습니까? 제 경우에는 중첩 된 함수 호출에서 첫 번째 함수를 큰 따옴표로 묶지 않습니까? 그것은 좋은 해결 방법이 될 것입니다. 그렇지 않으면 Rails 프로젝트에 버그를 제출할 것입니다.