Ini tidak berfungsi di SQL Server 2008:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
Kesalahannya adalah:
Sintaksis salah di dekat kata kunci 'SET'.
Apa yang saya lakukan salah?
Ini tidak berfungsi di SQL Server 2008:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
Kesalahannya adalah:
Sintaksis salah di dekat kata kunci 'SET'.
Apa yang saya lakukan salah?
Jawaban:
Ini akan bekerja di SQL Server:
ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;
ALTER TABLE Employee ADD DEFAULT 'SANDNES' FOR CityBorn
tidak dapat menggunakan kolom ubah untuk itu, gunakan tambahkan saja
ALTER TABLE Employee
ADD DEFAULT('SANDNES') FOR CityBorn
Cara yang benar untuk melakukan ini adalah sebagai berikut:
Jalankan perintah:
sp_help [table name]
Salin nama CONSTRAINT
.
Jatuhkan DEFAULT CONSTRAINT
:
ALTER TABLE [table name] DROP [NAME OF CONSTRAINT]
Jalankan perintah di bawah ini:
ALTER TABLE [table name] ADD DEFAULT [DEFAULT VALUE] FOR [NAME OF COLUMN]
Solusi Hoodaticus sempurna, terima kasih, tetapi saya juga membutuhkannya untuk dapat dijalankan kembali dan menemukan cara ini untuk memeriksa apakah sudah dilakukan ...
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
Ada dua skenario di mana nilai default untuk kolom bisa diubah,
Pertanyaan
create table table_name
(
column_name datatype default 'any default value'
);
Dalam hal ini server SQL saya tidak memungkinkan untuk mengubah nilai batasan default yang ada. Jadi untuk mengubah nilai default kita perlu menghapus sistem yang ada yang dihasilkan atau batasan standar yang dihasilkan pengguna. Dan setelah itu nilai default dapat diatur untuk kolom tertentu.
Ikuti beberapa langkah:
Jalankan prosedur database sistem ini, dibutuhkan nama tabel sebagai parameter. Ini mengembalikan daftar semua batasan untuk semua kolom dalam tabel.
execute [dbo].[sp_helpconstraint] 'table_name'
Sintaksis:
alter table 'table_name' drop constraint 'constraint_name'
Sintaksis:
alter table 'table_name' add default 'default_value' for 'column_name'
Bersulang @!!!
dalam hal pembatasan sudah ada dengan nama standarnya:
-- 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;
Anda dapat menggunakan sintaks berikut, Untuk informasi lebih lanjut lihat pertanyaan dan jawaban ini: Menambahkan kolom dengan nilai default ke tabel yang ada di SQL Server
Sintaks:
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
Contoh:
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.
Cara lain :
Klik kanan pada tabel dan klik Desain, lalu klik kolom yang ingin Anda tetapkan nilai default.
Kemudian di bagian bawah halaman tambahkan nilai default atau mengikat: sesuatu seperti '1' untuk string atau 1 untuk int.
Hanya Ditemukan 3 langkah sederhana untuk mengubah kolom yang sudah ada yang sebelumnya nol
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
Kendala drop pertama
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)
Kedua, buat nilai default
ALTER TABLE [table name] ADD DEFAULT [default value] FOR [column name]
Coba ikuti perintah;
ALTER TABLE Person11
ADD CONSTRAINT col_1_def
DEFAULT 'This is not NULL' FOR Address
Seperti jawaban Yuck dengan tanda centang untuk memungkinkan skrip dijalankan lebih dari sekali tanpa kesalahan. (lebih sedikit kode / string khusus daripada menggunakan 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