2014-08-31 3 views
1

이것이 가능한지 모르겠지만 필드가 기본값을 가진 테이블을 만들 때이 기본값을 다른 테이블의 값으로 가져올 수 있는지 알고 싶습니다. 행 삽입시 열.SQL 서버 - 기본값

CountryRegion 필드에
Create Table Countries (
    ID Int Not Null Identity(1,1), 
    CountryCode Char (2) Not Null, 
    Country Varchar (50) Not Null, 
    CountryRegion Varchar (50) Null Default ('Country'), 
    Nationality Varchar (75) Not Null Default ('Not Known'), 
    InsertDate Datetime2 Not Null Default Getdate(), 
     Constraint PK_CountryCode Primary Key (CountryCode)); 

, 나는 ('알 수없는')의 기본 가치를 부여 할 수 있지만 내가 말했듯이, 그것은 아무것도 그것에 배치되어 있지 않은 경우,이 필드는 기본적으로 국가 필드에 삽입 된 값을 가져옵니다 가능하다? 할 것 트리거를 사용하여

+0

트리거로이를 수행 할 수 있습니다. 즉, 삽입 전에, 필드가 null의 경우, 그 필드를 다른 필드의 값으로 설정합니다. –

+0

트리거를 사용하면 데이터베이스를 유지 관리하기가 어려워집니다. 응용 프로그램 계층에서이 문제를 해결할 것입니다. – Andomar

답변

1

은 - 바로 삽입

내가 TABLE 수준에서이 일을 더 쉽게이 없다고 생각
CREATE TRIGGER CountriesTrigger ON Countries AFTER INSERT   
AS 
BEGIN 

    SET NOCOUNT ON 

    UPDATE Countries 
    SET 
    Countries.CountryRegion = inserted.Country 
    FROM Countries, inserted 
    WHERE Countries.ID = inserted.ID 
     AND inserted.CountryRegion is null 

END 
+1

'AFTER INSERT, UPDATE'에 대해 'AFTER INSERT'를 변경하는 것이 좋습니다. 같은 방식으로 작동합니다 ([link] (http://stackoverflow.com/questions/741414/insert-update-trigger-how-to-determine-if-insert-or-update/7430369#7430369)) 대답은 더 많은 정보를 추가 할 것입니다. 이 [피들] (http://sqlfiddle.com/#!6/3f974/1)로 테스트 할 수 있습니다. – Zanon

0

다음에 열을 업데이트합니다. 이 작업을 수행 할 수있는 몇 가지 해결 방법이 있습니다. 1. 저장된 procs를 사용하고 있다면 거기에 논리를 쓸 수 있습니다. 2. 트리거는 옵션이지만 실행면에서 오버 헤드입니다.

감사합니다.