2012-02-17 40 views
8

Tôi có tuyên bố sau trong SQL Server:SQL Server: ALTER với ADD cột mới

ALTER TABLE [dbo].[TruckTbl] 
ADD [TruckState] [bit] NULL DEFAULT 0; 

Điều này sẽ làm là để mặc định bất cứ hồ sơ MỚI đến 0.

Đối với bản ghi hiện có như thế nào tôi có thể nhận và nói trong tuyên bố cũng mặc định những điều đó là 0.

Tôi biết tôi có thể thực hiện và cập nhật nhưng vẫn thực hiện trong bản cập nhật trong tuyên bố ALTER ở trên?

+0

nên lĩnh vực BIT của bạn * thực sự * được nullable? Điều này về cơ bản làm cho nó một tristate chứ không phải là một bistate. Nếu trường đó không cho phép null, tất cả các bản ghi trước đó sẽ nhận được giá trị mặc định theo quy định của bạn! – Jamiec

Trả lời

18

Sử dụng WITH VALUES khoản

ALTER TABLE [dbo].[TruckTbl] ADD [TruckState] [bit] NULL DEFAULT 0 WITH VALUES; 

Mặc dù tôi không đồng ý với câu trả lời khác, nó có vẻ kỳ lạ rằng cột nên nullable ở tất cả nếu bạn đang thiết tất cả các hàng hiện có để 0 và có một mặc định cho chèn tương lai . Bạn có bao giờ cần phải cho phép NULL làm giá trị cột ở đây không?

+2

Cool, không bao giờ biết * rằng * đã tồn tại. – Jamiec

0
ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE} 
[WITH VALUES] 

ví dụ

ALTER TABLE Temp 
ADD ID int NOT NULL DEFAULT(1) 
+0

Thêm nhận xét tại sao bạn lại downvote nó. –

Các vấn đề liên quan