2010-09-29 36 views
6

Tôi có một bảng được gọi là "tải xuống" với hàng nghìn hàng. Tôi chỉ cần thêm một cột gọi là is_completed sử dụng lệnh sau:SybaseDB, thay đổi giá trị mặc định của cột hiện tại trong một bảng

ALTER TABLE downloads ADD is_completed BIT default 1 NOT NULL

Bây giờ tôi muốn thay đổi giá trị mặc định cho is_completed tỉ số 0 - Tôi cố gắng lệnh này không có kết quả:

ALTER TABLE downloads MODIFY is_completed default 0 

Điều này không làm việc, nó nói rằng tôi có cú pháp không chính xác gần mặc định. Tôi dường như không thể làm điều này cho cuộc đời của tôi. Bất cứ ai biết cú pháp chính xác? Tôi muốn tất cả các hàng trong tương lai được thêm vào bảng này để có is_completed mặc định là 0 nếu một giá trị rõ ràng bị bỏ qua.

Trả lời

13

Để thay đổi một mặc định, bạn cần phải sử dụng thay thế chứ không phải là sửa đổi:

alter table downloads replace is_completed default 0 

Nếu bạn cần thay đổi các kiểu dữ liệu hoặc null/không null thì bạn nên sử dụng

alter table t modify c 
+0

điều này làm việc tuyệt vời. Tôi không bao giờ đàn thay thế trước đây. Làm thế nào đến nó không được đề cập trong cú pháp cho ALTER? – jonjonjonjuice

+0

Tôi đã không thực sự quen thuộc với nó. Nó được đề cập ở đây: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc36271_36272_36273_36274_1250/html/refman/X68185.htm – AdamH

0

Thả cột và thêm lại.

+1

wont giúp đỡ bởi vì tôi sẽ mất tất cả dữ liệu hiện có trong đó is_completed là = 1. – jonjonjonjuice

0

Trong SQL Server, bạn sẽ sử dụng ALTER TABLE ... DROP CONSTRAINT, tiếp theo là ALTER TABLE ... ADD CONSTRAINT. Có lẽ, Sybase sẽ có một cái gì đó tương tự?

0

1) kéo PKS của tất cả các hàng ĐÂU is_completed là = 1 vào bảng khác hoặc làm điều gì đó như:

SELECT 
    'UPDATE downloads SET is_completed is = 1 WHERE PK='+CONVERT(varchar(10),PK) 
    FROM downloads 

lưu lượng này, do đó bạn có thể chạy nó sau này, nếu bảng ban đầu của bạn chỉ có a few thousand rows thì không được lớn như vậy
2) thả cột
3) thêm cột với mặc định bạn muốn
4) chạy kết quả đã lưu từ truy vấn bên trên hoặc UPDATE bảng tải xuống có tham gia bảng được sử dụng để lưu trữ các hàng trong đó is_completed là = 1

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