제 데이터베이스에는 INTEGER 유형이있는 여러 필드가 있습니다. 나는 그들 중 일부를 BIGINT로 바꿀 필요가있다.INTEGER에서 BIGINT로 컬럼을 변경하십시오.
제 질문은 다음 명령을 사용할 수 있습니까?
ALTER TABLE MyTable ALTER COLUMN MyIntegerColumn TYPE BIGINT;
포함 된 데이터가 올바른 방식으로 변환 되었습니까? 변환 후이 열은 "실제"BIGINT 열입니까?
이 열 (트리거, ForeingKey, ...)에 제약 조건이 있으면 이것이 불가능하다는 것을 알고 있습니다. 그러나 제약이 없다면 이런 식으로 할 수 있습니까? 당신이
ALTER TABLE MyTable ALTER COLUMN MyIntegerColumn TYPE BIGINT;
파이어 버드는
INTEGER
에서
BIGINT
에 기존 데이터를 변환하지 않습니다
이 대신 생성됩니다를 실행하면
MyIntegerColumn -> MyIntegerColumnBac -> MyBigIntColumn
외래 키, 인덱스, 기본값, 규칙 등과 같이 하나 이상의 열에 제약 조건이없는 경우 ansquiser가 Yes이고 데이터가 corectly로 변환됩니다 (Firebird 3.0 For I Firebird 3.0 모르겠다.) –
감사합니다. 왜냐하면 나는 아직 알지 못하는 미래의 문제에 부딪 치고 싶지 않기 때문입니다. – Andreas
https://firebirdsql.org/refdocs/langrefupd25-ddl-table.html#langrefupd25-alter-table에 따르면 트리거 및 저장 프로 시저는 Firebird 2.5 이후 열 유형을 변경하는 것을 방지하지 않습니다. –