database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
ㆍSybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Sybase Q&A 1443 게시물 읽기
No. 1443
Column 추가 에러
작성자
급해요
작성일
2006-02-21 09:08
조회수
6,581

Sybase Version : ASE12.5.0

기존의 Table에 Index Column을 추가하고 싶은데, 잘 안되네요...

2가지방법을 시도했는데..

첫번째, alter table을 하면 Default clause is required in order to add non-NULL column '칼럼명'

이런식으로 에러가 발생하구요.

두번째, Table을 drop시키고, 추가하려는 Script를 집어넣고, Table을 만들면 잘 만들어지는데요..

문제는 기존의 데이터를 BCP In할때도 에러가 발생합니다..

 

해결방법이 없을까요? 고수님의 조언을 기다리겠습니다..

감사합니다..

 

 

이 글에 대한 댓글이 총 6건 있습니다.

1. alter table을 하실때는 뒤에 null을 넣어야 합니다.

   alter table Table-name add column-name datatype null

  이렇게 해야합니다.

 

2.table을 만들고 bcp in을 하시려면

  bcp.fmt file을 만들어서 하시면 됩니다.

 

3. bcp 하지말고 insert select로 하시면 됩니다.

 

 

지연님이 2006-02-21 09:14에 작성한 댓글입니다. Edit

 

질문할때 제대로 글을 안썼네요...

컬럼 추가명령어는 다음과 같습니다.

-------------------------------------------------

alter table 테이블명 add 컬럼명 int not null

-------------------------------------------------

이렇게 했습니다. 그런데 위에 컬럼이 index라는겁니다.

기존의 index가 있는데, Error가 나서 글을 올리게 됐습니다.

또한 format 파일만들어서 bcp in도 해봤는데도 오류가 나구요..

에러메시지는

--------------------------------------------------------------

blk_rowxfer(): blk layer: internal BLK-Library error: No value or default value available and NULL not allowed.

--------------------------------------------------------------

번거롭지만, 해결책이 있으시다면 감사하겠습니다..

급해요님이 2006-02-21 09:29에 작성한 댓글입니다.
이 댓글은 2006-02-21 09:40에 마지막으로 수정되었습니다. Edit

add는 반드시 null로 해야 하는데요....

 

 

질문이 어렵네요...........

 

 

index가 있는데, identity column등을 만들어서 index key로 같이 잡고 싶다는 말씀인가요?..

 

 

그럼 그냥 insert select로 다시 만드시지요....

 

create table하실때 추가되는 컬럼을 default 값을 주시고요...

지연님이 2006-02-21 09:39에 작성한 댓글입니다. Edit

insert select 명령어는 어떤식으로 구사를 해야할지요..

잘모르는 초보라... 한 수 부탁드립니다..^^

급해요님이 2006-02-21 10:25에 작성한 댓글입니다. Edit

1> create table old(a int,b int,c int)
2> go

1> insert old values(1,1,1)
2> go
(1 row affected)
1> insert old values(1,1,2)
2> go
(1 row affected)
1> insert old values(1,1,3)
2> go

========================================

위처럼 talbe과 data가 있으면

 

1> select *,1 as d into new from old
2> go

1> select * from new
2> go
 a           b           c           d
 ----------- ----------- ----------- -----------
           1           1           1           1
           1           1           2           1
           1           1           3           1

이렇게 select into로도 만들수 있고요

============================================

 

1> create table new(a int,b int, c int ,d int default 0)
2> go

1> insert new(a,b,c) select * from old
2> go

1> select * from new
2> go
 a           b           c           d
 ----------- ----------- ----------- -----------
           1           1           1           0
           1           1           2           0
           1           1           3           0

이렇게 table을 만든후 insert select 할수도 있습니다.

 

 

수고하세요

지연님이 2006-02-21 17:30에 작성한 댓글입니다. Edit

바쁘신데, 이렇게 상세하게 답변주셔서 너무도 감사합니다.

환절기인데, 감기조심하시구요... ^^

급해요님이 2006-02-21 17:50에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1446insert 문장에 관련된 간단한 질문 [4]
초보
2006-02-23
4147
1445사이베이스에서 numeric를 string 타입으로 변경하는 방법좀 [2]
시그너스
2006-02-21
5170
1444사이베이스에서 numeric를 string 타입으로 변경하는 방법좀
시그너스
2006-02-21
3741
1443Column 추가 에러 [6]
급해요
2006-02-21
6581
1442asiq EXECUTE IMMEDIATE 문의 [8]
손유근
2006-02-17
4799
1441temp table 문제 입니다. [3]
조경남
2006-02-16
8354
1440out of LOCKS 문제.. [1]
허남훈
2006-02-15
4481
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다