데이터베이스에 원래 smalldatetime
으로 생성 된 열이 많으며 실제로는 datetime
일 필요가 있습니다. 이 컬럼의 대부분은 DDL로 만든 : 컬럼의 유형을 변경하기 위해, 내가 먼저 기본을 삭제하고 다음을 변경 한 후 기본을 다시 만들 필요가 있다는 것을 의미smalldatetime 열을 기본값으로 datetime으로 변경하려면 어떻게해야합니까?
[columnname] smalldatetime not null default getdate()
을 ....
물론 DDL에서 기본값 이름을 지정하지 않았기 때문에 모든 열의 기본값은 DF__CaseLock__CaseCo__182C9B23
입니다. 그리고 내 응용 프로그램이 데이터베이스를 만들 때 스크립트를 실행하여 데이터베이스를 만듭니다. 따라서 내 고객 데이터베이스의 기본 이름이 내 이름과 다른 (추측하고 있지만 확인하지 않았습니다).
기본 제약 조건의 이름을 알고 있더라도 삭제 한 후에 다시 추가 구문을 알아낼 수 없습니다. 실제로, 그것은 내게 그것이 가능하다는 사실을 알지 못합니다. 기존 컬럼에 디폴트 제한을 추가합니다. 내가 constraint_name
이 무엇인지 알고 있다면 난의 열을 삭제할 수 없기 때문에 단지 나는 단지 그 스크립트를 작성할 수 있습니다 ...
declare @t table (id int not null primary key, date smalldatetime null)
insert into @t (id, date)
select id, date_column from my_table
drop constraint constraint_name
alter table my_table drop column date_column;
alter table my_table add date_column datetime default getdate()
update my_table set date_column = t.date FROM my_table m JOIN @t t ON m.id = t.ID
:
내가이해야 할 것은이 같은 것 같습니다 제약에서 참조된다.
정말 그렇게 어렵습니까?
모든 기본 제약 조건에 대한 해당 쿼리 반환 한 행이'my_table'에 정의하지 않을까요? –
아, 죄송합니다. 나는 당신에게 여러 가지 기본 제약이 있음을 깨닫지 못했다. 잠시 후에 편집하겠습니다. – Paul
OK ... 완료되었습니다. – Paul