2012-05-29 4 views
5

특정 열에서 거짓 다음과 같은 열이있는 테이블을 설정합니다. 이 열에는 모든 행에 null이 포함되어 있습니다.나는 모든 행

ID Name IsConfirmed 
1  test1  null 
2  test2  null 

나는 T-SQL을 사용하여 테이블의 모든 행에 IsConfirmed 열에 false를 설정하는 방법?

감사

답변

17
UPDATE YourTableName 
SET IsConfirmed=0 
WHERE isConfirmed is Null 

이 무례하게 의미하지 않는다, 그러나 당신이 요청하기 전에이 연구에 어떠한 노력을 했는가?

+2

+1 그러나 WHERE 절을 사용하는 것이 안전 조치로 제안됩니다. 'Where Isfirmated is NULL' 그것은 약간의 중복이지만 재앙을 피하는 것을 배우기에는 너무 이릅니다. 필터가없는 UPDATE 쿼리는 많은 데이터 사고의 원천이었습니다. –

+0

그것은 나에게 긴장을 불러 일으켰고, 어디에도 글을 쓰지 않았지만 나는 OP를 혼동하고 싶지 않았다. 그래도 좋은 지적. – JohnFx

+0

+1 @PaulSasik : 감사합니다. 4 점을 지적했습니다. – Addicted

1

@JohnFx's suggestion은 문제의 완벽한 해결책입니다. 그러나 이런 종류의 상황이 나타나지 않도록 방지하는 동시에 다른 잠재적 인 문제를 해결할 수있는 방법을 알고 싶을 수도 있습니다.

특히, 널 (NULL)을 0으로 YY려고한다는 사실은 컬럼이 처음에 널 (NULL)을 보유하지 못하게하려는 것일 수 있습니다. 당신이 비어 있지 않은 테이블에 NOT NULL 열을 추가하려고하면

물론
ALTER TABLE tablename 
ADD IsConfirmed bit NOT NULL 

, 오류의 경우를 얻을 수 있습니다 : 그것은 실제로 경우라면, 당신은 NOT NULL 지정에 열을 추가한다 사용자가 은 SQL Server가 정의에 따라 NULL을 허용하는 열을 추가하려고하기 때문에 열의 기본값을 제공하지 않습니다.

ALTER TABLE tablename 
ADD IsConfirmed bit NOT NULL 
CONSTRAINT DF_tablename_IsConfirmed DEFAULT (0) 

CONSTRAINT DF_tablename_IsConfirmed 부분은 선택 사항입니다, 당신은 단지 DEAFULT (0)을 남길 수 있습니다,하지만, 난 여전히 그런 식으로하기 때문에, 당신은 기본값을 포함하여 모든 제약 조건을 명시 적으로 이름을 부여하는 것이 좋습니다 : 그래서,이 대신 같은 NOT NULL 열을 추가 그 (것)들을 드롭/재창조하는 것이 더 쉬울 것입니다. 같은 이유로 (제약 조건을 쉽게 관리 할 수 ​​있도록) 제약 조건의 이름을 지정하는 데 고정 패턴을 사용하는 것이 좋습니다. 위의 문장 (DFDEFAULT이고 그 뒤에 표 이름이오고 열 이름이 뒤 따른다.)의 패턴은 단지 하나의 예일 뿐이다. 당신은 다른 것을 올릴 수있다. 하지만 일단 일관성을 유지하십시오.