2014-12-27 5 views
-2

Projectdetails에 EAC 열을 만들려고합니다. 표 1 : Projectdetails] 표 2 : "RAC ']Insert & Select

(SELECT b.[EAC] FROM [dbo].[Projectdetails] a 
    INNER JOIN [dbo].['RAC'] b ON a.[ProjectKey]= b.[Project _ID]) 

잘 작동과 저 (421 개) 행을 반환.

다음 쿼리는 작동하지 않습니다 그러나 다음으로

update pd 
    set EAC = r.EAC 
    from [dbo].[Projectdetails] pd join 
     [dbo].['RAC'] r 
     on pd.[ProjectKey] = r.[Project _ID]); 

:

Insert into [dbo].[Projectdetails]([EAC]) 
    (SELECT b.[EAC] FROM [dbo].[Projectdetails] a 
    INNER JOIN [dbo].['RAC'] b ON a.[ProjectKey]= b.[Project _ID]) 

내가 의심

+0

처럼 그냥 내가 이해해야 하는가? – Mureinik

+0

'(프로젝트 b. [EAC] FROM [dbo]를 실행하십시오. [Projectdetails] a INNER JOIN [dbo]. [ 'RAC'] b ON [ProjectKey] = b. [Project _ID] WHERE b.EAC IS NULL)'입니다. 하나 이상의 레코드를 찾으면 문제가 있습니다 – dotnetom

답변

0

당신이 정말 update을 원하는 나를 열 ProjectKey에 NULL 값을 삽입 할 수 없습니다 반환 방법, 테이블 이름에 작은 따옴표를 넣는 것은 정말 나쁜 생각처럼 보입니다.

+0

메시지 8152, 수준 16, 상태 2, 줄 1 문자열 또는 이진 데이터가 잘립니다. 명세서가 종료되었습니다. – SunnyKP

+0

@SunnyKP. . . 두 개의 'EAC' 컬럼에 대한 데이터 유형을 점검해야합니다. 그것들은 다르다. 한 테이블의 값이 다른 테이블에 맞지 않을 때 수행 할 작업을 결정해야합니다. –

+0

이 코드가 도움이되었습니다. 데이터 유형이 다르며 둘 다 동일하게 고정하면 고정됩니다. – SunnyKP

0

ProjectKey는 NULL이 아니므로 기본 키입니다. 따라서 이 열에 대해 특정 값을 제공하지 않고이 행에 새로운 행을 삽입하려고하면 sqlserver는 NULL을 기본값 인 값으로 추가하려고 시도합니다. 그러나 이것은 NULL이 아니기 때문에 오류가 발생합니다.

가장 좋은 해결책은이 열을 자동 증가 열로 만드는 것입니다. 당신은 오른쪽 추가하고 기존 행에`EAC` 열을 채우기 위해 시도하고 -이

Sql Server add auto increment primary key to existing table

SQL Server, How to set auto increment after creating a table without data loss?