Điều này không hoạt động trong SQL Server 2008:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
Lỗi là:
Cú pháp không chính xác gần từ khóa 'SET'.
Tôi đang làm gì sai?
Điều này không hoạt động trong SQL Server 2008:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
Lỗi là:
Cú pháp không chính xác gần từ khóa 'SET'.
Tôi đang làm gì sai?
Câu trả lời:
Điều này sẽ hoạt động trong SQL Server:
ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;
ALTER TABLE Employee ADD DEFAULT 'SANDNES' FOR CityBorn
không thể sử dụng cột thay đổi cho điều đó, sử dụng thêm thay thế
ALTER TABLE Employee
ADD DEFAULT('SANDNES') FOR CityBorn
Cách chính xác để làm điều này là như sau:
Chạy lệnh:
sp_help [table name]
Sao chép tên của CONSTRAINT
.
Thả DEFAULT CONSTRAINT
:
ALTER TABLE [table name] DROP [NAME OF CONSTRAINT]
Chạy lệnh dưới đây:
ALTER TABLE [table name] ADD DEFAULT [DEFAULT VALUE] FOR [NAME OF COLUMN]
Giải pháp của Hoodaticus là hoàn hảo, cảm ơn bạn, nhưng tôi cũng cần nó để có thể chạy lại được và tìm cách này để kiểm tra xem nó đã được thực hiện chưa ...
IF EXISTS(SELECT * FROM information_schema.columns
WHERE table_name='myTable' AND column_name='myColumn'
AND Table_schema='myDBO' AND column_default IS NULL)
BEGIN
ALTER TABLE [myDBO].[myTable] ADD DEFAULT 0 FOR [myColumn] --Hoodaticus
END
Có hai kịch bản có thể thay đổi giá trị mặc định cho một cột,
Truy vấn
create table table_name
(
column_name datatype default 'any default value'
);
Trong trường hợp này, máy chủ SQL của tôi không cho phép sửa đổi giá trị ràng buộc mặc định hiện có. Vì vậy, để thay đổi giá trị mặc định, chúng ta cần xóa ràng buộc mặc định do hệ thống tạo hoặc do người dùng tạo. Và sau đó giá trị mặc định có thể được đặt cho một cột cụ thể.
Thực hiện theo một số bước:
Thực hiện thủ tục cơ sở dữ liệu hệ thống này, nó lấy tên bảng làm tham số. Nó trả về danh sách tất cả các ràng buộc cho tất cả các cột trong bảng.
execute [dbo].[sp_helpconstraint] 'table_name'
Cú pháp:
alter table 'table_name' drop constraint 'constraint_name'
Cú pháp:
alter table 'table_name' add default 'default_value' for 'column_name'
chúc mừng @ !!!
trong trường hợp hạn chế đã tồn tại với tên mặc định của nó:
-- Drop existing default constraint on Employee.CityBorn
DECLARE @default_name varchar(256);
SELECT @default_name = [name] FROM sys.default_constraints WHERE parent_object_id=OBJECT_ID('Employee') AND COL_NAME(parent_object_id, parent_column_id)='CityBorn';
EXEC('ALTER TABLE Employee DROP CONSTRAINT ' + @default_name);
-- Add default constraint on Employee.CityBorn
ALTER TABLE Employee ADD CONSTRAINT df_employee_1 DEFAULT 'SANDNES' FOR CityBorn;
Bạn có thể sử dụng cú pháp sau, Để biết thêm thông tin, hãy xem câu hỏi và câu trả lời này: Thêm một cột có giá trị mặc định vào bảng hiện có trong SQL Server
Cú pháp:
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
Thí dụ :
ALTER TABLE SomeTable
ADD SomeCol Bit NULL --Or NOT NULL.
CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is
autogenerated.
DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.
Cách khác :
Nhấp chuột phải vào bảng và nhấp vào Thiết kế, sau đó nhấp vào cột mà bạn muốn đặt giá trị mặc định.
Sau đó, ở dưới cùng của trang thêm một giá trị mặc định hoặc ràng buộc: một cái gì đó như '1' cho chuỗi hoặc 1 cho int.
Chỉ tìm thấy 3 bước đơn giản để thay đổi cột đã tồn tại trước đó là null
update orders
set BasicHours=0 where BasicHours is null
alter table orders
add default(0) for BasicHours
alter table orders
alter column CleanBasicHours decimal(7,2) not null
Hạn chế thả đầu tiên
https://stackoverflow.com/a/49393045/2547164
DECLARE @ConstraintName nvarchar(200)
SELECT @ConstraintName = Name FROM SYS.DEFAULT_CONSTRAINTS
WHERE PARENT_OBJECT_ID = OBJECT_ID('__TableName__')
AND PARENT_COLUMN_ID = (SELECT column_id FROM sys.columns
WHERE NAME = N'__ColumnName__'
AND object_id = OBJECT_ID(N'__TableName__'))
IF @ConstraintName IS NOT NULL
EXEC('ALTER TABLE __TableName__ DROP CONSTRAINT ' + @ConstraintName)
Thứ hai tạo giá trị mặc định
ALTER TABLE [table name] ADD DEFAULT [default value] FOR [column name]
Hãy thử làm theo lệnh;
ALTER TABLE Person11
ADD CONSTRAINT col_1_def
DEFAULT 'This is not NULL' FOR Address
Giống như câu trả lời của Yuck với một kiểm tra để cho phép tập lệnh được chạy nhiều lần mà không gặp lỗi. (ít mã / chuỗi tùy chỉnh hơn so với sử dụng information_schema.columns)
IF object_id('DF_SomeName', 'D') IS NULL BEGIN
Print 'Creating Constraint DF_SomeName'
ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;
END