[SQLite] DB생성후 나중에 Primary Key ADD 하기
안녕하세요.
SQLite Tip하나 공유합니다.
SQLite는 아래와 같은 명령을 지원하지 않죠!
ALTER TABLE [Table]
ADD CONSTRAINT Table_PK PRIMARY KEY ( COL, ... )
SQLite는 데이터만 먼저 생성한후 나중에 Primary Key를 추가하는 명령이 없습니다.
이런 경우는 아래처럼 Transaction을 이용해서 Rename을 한후에 생성해주는 방식이 있습니다.
ex) 예시
--> 먼저 Rename을 실행하는 부분입니다.
BEGIN TRANSACTION;
alter table MasterF1 RENAME TO old_MasterF1;
--> 동일한 새 테이블을 생성합니다.
CREATE TABLE [MasterF1]
(
[Observatory] VARCHAR(60) NOT NULL ,
[Item] VARCHAR(20) NOT NULL ,
[BaseDate] VARCHAR(10) NOT NULL ,
[Value] REAL NULL ,
[Descr] VARCHAR(100) NULL ,
[OrderSeq] INT NULL
, PRIMARY KEY ( [Observatory],[Item],[BaseDate] )
);
--> 기존 데이터를 새 테이블에 채웁니다.
INSERT INTO MasterF1 SELECT * FROM old_MasterF1;
--> 기존 테이블을 삭제합니다.
DROP TABLE old_MasterF1;
COMMIT;
위 스크립트를 참조하시면 다른 더 좋은 방법으로도 가능하실겁니다.
좋은 하루 되세요.
홈페이지: http://www.wooribnc.com
모든 프로그램개발 의뢰 가능합니다.
SQLite Tip하나 공유합니다.
SQLite는 아래와 같은 명령을 지원하지 않죠!
ALTER TABLE [Table]
ADD CONSTRAINT Table_PK PRIMARY KEY ( COL, ... )
SQLite는 데이터만 먼저 생성한후 나중에 Primary Key를 추가하는 명령이 없습니다.
이런 경우는 아래처럼 Transaction을 이용해서 Rename을 한후에 생성해주는 방식이 있습니다.
ex) 예시
--> 먼저 Rename을 실행하는 부분입니다.
BEGIN TRANSACTION;
alter table MasterF1 RENAME TO old_MasterF1;
--> 동일한 새 테이블을 생성합니다.
CREATE TABLE [MasterF1]
(
[Observatory] VARCHAR(60) NOT NULL ,
[Item] VARCHAR(20) NOT NULL ,
[BaseDate] VARCHAR(10) NOT NULL ,
[Value] REAL NULL ,
[Descr] VARCHAR(100) NULL ,
[OrderSeq] INT NULL
, PRIMARY KEY ( [Observatory],[Item],[BaseDate] )
);
--> 기존 데이터를 새 테이블에 채웁니다.
INSERT INTO MasterF1 SELECT * FROM old_MasterF1;
--> 기존 테이블을 삭제합니다.
DROP TABLE old_MasterF1;
COMMIT;
위 스크립트를 참조하시면 다른 더 좋은 방법으로도 가능하실겁니다.
좋은 하루 되세요.
홈페이지: http://www.wooribnc.com
모든 프로그램개발 의뢰 가능합니다.
댓글
댓글 쓰기