it-swarm.asia

Tambahkan kolom dengan nilai default ke tabel yang ada di SQL Server

Bagaimana kolom dengan nilai default ditambahkan ke tabel yang ada di SQL Server 2000 / SQL Server 2005 ?

2439
Mathias

Sintaksis:

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.

Catatan:

Nama Kendala Opsional:
Jika Anda meninggalkan CONSTRAINT D_SomeTable_SomeCol maka SQL Server akan dibuat otomatis
Keluhan Default dengan Nama lucu seperti: DF__SomeTa__SomeC__4FB7FEF6

Pernyataan Nilai-Nilai Opsional:
WITH VALUES hanya diperlukan saat Kolom Anda Tidak Dapat Diabaikan
dan Anda ingin Nilai Default digunakan untuk Catatan yang Ada.
Jika Kolom Anda adalah NOT NULL, maka itu akan secara otomatis menggunakan Nilai Default
untuk semua Catatan yang Ada, apakah Anda menentukan WITH VALUES atau tidak.

Bagaimana Sisipan bekerja dengan Batasan-Default:
Jika Anda memasukkan Record ke SomeTable dan melakukannotTentukan nilai SomeCol, maka itu akan Default ke 0.
Jika Anda memasukkan RecorddanTentukan nilai SomeCol sebagai NULL (dan kolom Anda memungkinkan nulls),
maka Default-Constraint akannotdigunakan dan NULL akan dimasukkan sebagai Value.

Catatan didasarkan pada tanggapan semua orang di bawah ini.
Terima kasih khusus kepada:
@Yatrix, @WalterStabosz, @YahooSerious, dan @StackMan untuk Komentar mereka.

3111
James Boother
ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO

DimasukkannyaDEFAULTmengisi kolom di existing rows dengan nilai default, sehingga batasan NOT NULL tidak dilanggar. 

903
dbugger

Saat menambahkan kolom nullable, WITH VALUES akan memastikan bahwa nilai DEFAULT spesifik diterapkan ke baris yang ada:

ALTER TABLE table
ADD column BIT     -- Demonstration with NULL-able column added
CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES
207
phunk_munkie
ALTER TABLE <table name> 
ADD <new column name> <data type> NOT NULL
GO
ALTER TABLE <table name> 
ADD CONSTRAINT <constraint name> DEFAULT <default value> FOR <new column name>
GO
122
ddc0660
ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR(200) DEFAULT 'SNUGGLES'
111
Evan V

Waspadalah ketika kolom yang Anda tambahkan memiliki batasan NOT NULL, namun tidak memiliki batasan DEFAULT (nilai). Pernyataan ALTER TABLE akan gagal dalam kasus itu jika tabel memiliki baris di dalamnya. Solusinya adalah dengan menghapus batasan NOT NULL dari kolom baru, atau memberikan batasan DEFAULT untuknya.

89
jalbert

Versi paling dasar dengan dua baris saja

ALTER TABLE MyTable
ADD MyNewColumn INT NOT NULL DEFAULT 0
86
adeel41

Menggunakan:

-- Add a column with a default DateTime  
-- to capture when each record is added.

ALTER TABLE myTableName  
ADD RecordAddedDate smalldatetime NULL DEFAULT(GetDate())  
GO 
69
JerryOL

Jika Anda ingin menambahkan beberapa kolom, Anda dapat melakukannya dengan cara ini misalnya:

ALTER TABLE YourTable
    ADD Column1 INT NOT NULL DEFAULT 0,
        Column2 INT NOT NULL DEFAULT 1,
        Column3 VARCHAR(50) DEFAULT 'Hello'
GO
62
Gabriel L.

Dalam SQL Server 2008-R2, saya pergi ke mode desain - dalam database pengujian - dan menambahkan dua kolom saya menggunakan perancang dan membuat pengaturan dengan GUI, dan kemudian yang terkenal Right-Click memberikan opsi " Hasilkan Script Perubahan "!

Bang up muncul jendela kecil dengan, Anda dapat menebaknya, skrip perubahan dijamin untuk bekerja yang diformat dengan benar. Tekan tombol mudah.

48
Jack

Menggunakan:

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}

Referensi: ALTER TABLE (Transact-SQL) (MSDN)

46
giá vàng

Anda dapat melakukan hal itu dengan T-SQL dengan cara berikut.

 ALTER TABLE {TABLENAME}
 ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
 CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}

Selain Anda dapat menggunakan SQL Server Management Studio juga dengan mengklik kanan tabel di menu Desain, mengatur nilai default ke tabel.

Dan selanjutnya, jika Anda ingin menambahkan kolom yang sama (jika tidak ada) ke semua tabel dalam database, maka gunakan:

 USE AdventureWorks;
 EXEC sp_msforeachtable
'PRINT ''ALTER TABLE ? ADD Date_Created DATETIME DEFAULT GETDATE();''' ;
43
gngolakia

Atau, Anda dapat menambahkan default tanpa harus memberi nama batasan secara eksplisit:

ALTER TABLE [schema].[tablename] ADD  DEFAULT ((0)) FOR [columnname]

Jika Anda memiliki masalah dengan batasan default yang ada saat membuat batasan ini maka mereka dapat dihilangkan dengan:

alter table [schema].[tablename] drop constraint [constraintname]
41
Christo

Untuk menambahkan kolom ke tabel database yang ada dengan nilai default, kita dapat menggunakan:

ALTER TABLE [dbo.table_name]
    ADD [Column_Name] BIT NOT NULL
Default ( 0 )

Berikut ini cara lain untuk menambahkan kolom ke tabel database yang ada dengan nilai default.

Script SQL yang jauh lebih menyeluruh untuk menambahkan kolom dengan nilai default di bawah ini termasuk memeriksa apakah kolom itu ada sebelum menambahkannya juga checkin kendala dan menjatuhkannya jika ada. Script ini juga memberi nama batasan sehingga kita dapat memiliki konvensi penamaan yang bagus (saya suka DF_) dan jika tidak SQL akan memberi kita batasan dengan nama yang memiliki nomor yang dihasilkan secara acak; jadi itu bagus untuk bisa menyebutkan kendala juga.

-------------------------------------------------------------------------
-- Drop COLUMN
-- Name of Column: Column_EmployeeName
-- Name of Table: table_Emplyee
--------------------------------------------------------------------------
IF EXISTS (
            SELECT 1
            FROM INFORMATION_SCHEMA.COLUMNS
            WHERE TABLE_NAME = 'table_Emplyee'
              AND COLUMN_NAME = 'Column_EmployeeName'
           )
    BEGIN

        IF EXISTS ( SELECT 1
                    FROM sys.default_constraints
                    WHERE object_id = OBJECT_ID('[dbo].[DF_table_Emplyee_Column_EmployeeName]')
                      AND parent_object_id = OBJECT_ID('[dbo].[table_Emplyee]')
                  )
            BEGIN
                ------  DROP Contraint

                ALTER TABLE [dbo].[table_Emplyee] DROP CONSTRAINT [DF_table_Emplyee_Column_EmployeeName]
            PRINT '[DF_table_Emplyee_Column_EmployeeName] was dropped'
            END
     --    -----   DROP Column   -----------------------------------------------------------------
        ALTER TABLE [dbo].table_Emplyee
            DROP COLUMN Column_EmployeeName
        PRINT 'Column Column_EmployeeName in images table was dropped'
    END

--------------------------------------------------------------------------
-- ADD  COLUMN Column_EmployeeName IN table_Emplyee table
--------------------------------------------------------------------------
IF NOT EXISTS (
                SELECT 1
                FROM INFORMATION_SCHEMA.COLUMNS
                WHERE TABLE_NAME = 'table_Emplyee'
                  AND COLUMN_NAME = 'Column_EmployeeName'
               )
    BEGIN
    ----- ADD Column & Contraint
        ALTER TABLE dbo.table_Emplyee
            ADD Column_EmployeeName BIT   NOT NULL
            CONSTRAINT [DF_table_Emplyee_Column_EmployeeName]  DEFAULT (0)
        PRINT 'Column [DF_table_Emplyee_Column_EmployeeName] in table_Emplyee table was Added'
        PRINT 'Contraint [DF_table_Emplyee_Column_EmployeeName] was Added'
     END

GO

Ini adalah dua cara untuk menambahkan kolom ke tabel database yang ada dengan nilai default.

40
Catto
ALTER TABLE ADD ColumnName {Column_Type} Constraint

Artikel MSDN ALTER TABLE (Transact-SQL) memiliki semua sintaks tabel alter.

34
Benjamin Autin

Ini dapat dilakukan di GUI SSMS juga. Saya menunjukkan tanggal default di bawah ini, tetapi nilai defaultnya bisa berapa saja, tentu saja.

  1. Letakkan meja Anda di tampilan desain (Klik kanan pada tabel di objek Explorer-> Desain)
  2. Tambahkan kolom ke tabel (atau klik pada kolom yang ingin Anda perbarui ifit sudah ada)
  3. Dalam Properti Kolom di bawah ini, masukkan (getdate()) atau abc atau 0 atau nilai apa pun yang Anda inginkan dalam bidang Nilai Default atau Binding seperti yang digambarkan di bawah ini:

 enter image description here

29
Tony L.

Contoh:

ALTER TABLE [Employees] ADD Seniority int not null default 0 GO
27
andy

Contoh:

ALTER TABLE tes 
ADD ssd  NUMBER   DEFAULT '0';
21
Mohit Tamrakar

Pertama buat tabel dengan nama siswa:

CREATE TABLE STUDENT (STUDENT_ID INT NOT NULL)

Tambahkan satu kolom ke dalamnya:

ALTER TABLE STUDENT 
ADD STUDENT_NAME INT NOT NULL DEFAULT(0)

SELECT * 
FROM STUDENT

Tabel dibuat dan kolom ditambahkan ke tabel yang ada dengan nilai default.

 Image 1

17
Laxmi

SQL Server + Alter Table + Tambahkan Kolom + Nilai Default uniqueidentifier 

ALTER TABLE Product 
ADD ReferenceID uniqueidentifier not null 
default (cast(cast(0 as binary) as uniqueidentifier))
16
Naveen Desosha

Coba ini

ALTER TABLE Product
ADD ProductID INT NOT NULL DEFAULT(1)
GO
15
Jakir Hossain
IF NOT EXISTS (
    SELECT * FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME ='TABLENAME' AND COLUMN_NAME = 'COLUMNNAME'
)
BEGIN
    ALTER TABLE TABLENAME ADD COLUMNNAME Nvarchar(MAX) Not Null default
END
14
Jeevan Gharti

Ini memiliki banyak jawaban, tetapi saya merasa perlu menambahkan metode yang diperluas ini. Ini tampaknya jauh lebih lama, tetapi ini sangat berguna jika Anda menambahkan bidang NOT NULL ke tabel dengan jutaan baris dalam database aktif.

ALTER TABLE {schemaName}.{tableName}
    ADD {columnName} {datatype} NULL
    CONSTRAINT {constraintName} DEFAULT {DefaultValue}

UPDATE {schemaName}.{tableName}
    SET {columnName} = {DefaultValue}
    WHERE {columName} IS NULL

ALTER TABLE {schemaName}.{tableName}
    ALTER COLUMN {columnName} {datatype} NOT NULL

Yang akan dilakukan adalah menambahkan kolom sebagai bidang yang dapat dibatalkan dan dengan nilai default, perbarui semua bidang ke nilai default (atau Anda dapat menetapkan nilai yang lebih bermakna), dan akhirnya akan mengubah kolom menjadi TIDAK NULL.

Alasannya adalah jika Anda memperbarui tabel skala besar dan menambahkan bidang bukan nol yang baru ia harus menulis ke setiap baris dan dengan ini akan mengunci seluruh tabel saat menambahkan kolom dan kemudian menulis semua nilai.

Metode ini akan menambahkan kolom nullable yang beroperasi jauh lebih cepat dengan sendirinya, kemudian mengisi data sebelum menetapkan status bukan nol.

Saya telah menemukan bahwa melakukan seluruh hal dalam satu pernyataan akan mengunci salah satu tabel kami yang lebih aktif selama 4-8 menit dan cukup sering saya membunuh prosesnya. Metode ini setiap bagian biasanya hanya membutuhkan beberapa detik dan menyebabkan penguncian minimal.

Selain itu, jika Anda memiliki tabel di bidang miliaran baris, mungkin layak untuk mengelompokkan pembaruan seperti:

WHILE 1=1
BEGIN
    UPDATE TOP (1000000) {schemaName}.{tableName}
        SET {columnName} = {DefaultValue}
        WHERE {columName} IS NULL

    IF @@ROWCOUNT < 1000000
        BREAK;
END
13
Ste Bov
--Adding Value with Default Value
ALTER TABLE TestTable
ADD ThirdCol INT NOT NULL DEFAULT(0)
GO
12
wild coder

Tambahkan kolom baru ke tabel:

ALTER TABLE [table]
ADD Column1 Datatype

Sebagai contoh,

ALTER TABLE [test]
ADD ID Int

Jika pengguna ingin menambahkannya secara otomatis, maka:

ALTER TABLE [test]
ADD ID Int IDENTITY(1,1) NOT NULL
10
Chirag Thakar

Ini dapat dilakukan dengan kode di bawah ini.

CREATE TABLE TestTable
    (FirstCol INT NOT NULL)
    GO
    ------------------------------
    -- Option 1
    ------------------------------
    -- Adding New Column
    ALTER TABLE TestTable
    ADD SecondCol INT
    GO
    -- Updating it with Default
    UPDATE TestTable
    SET SecondCol = 0
    GO
    -- Alter
    ALTER TABLE TestTable
    ALTER COLUMN SecondCol INT NOT NULL
    GO
9
Mohit Dagar

Nah, sekarang saya memiliki beberapa modifikasi pada jawaban saya sebelumnya. Saya perhatikan bahwa tidak ada jawaban yang disebutkan IF NOT EXISTS. Jadi saya akan memberikan solusi baru karena saya telah menghadapi beberapa masalah mengubah tabel.

IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.columns WHERE table_name = 'TaskSheet' AND column_name = 'IsBilledToClient')
BEGIN
ALTER TABLE dbo.TaskSheet ADD
 IsBilledToClient bit NOT NULL DEFAULT ((1))
END
GO

Di sini TaskSheet adalah nama tabel tertentu dan IsBilledToClient adalah kolom baru yang akan Anda masukkan dan 1 nilai default. Itu berarti di kolom baru apa yang akan menjadi nilai dari baris yang ada, oleh karena itu satu akan ditetapkan secara otomatis di sana. Namun, Anda dapat mengubah sesuai keinginan dengan menghormati jenis kolom seperti saya telah menggunakan BIT, jadi saya memasukkan nilai default 1.

Saya menyarankan sistem di atas, karena saya menghadapi masalah. Jadi apa masalahnya? Masalahnya adalah, jika kolom IsBilledToClient memang ada dalam tabel tabel maka jika Anda hanya menjalankan sebagian dari kode yang diberikan di bawah ini Anda akan melihat kesalahan dalam pembangun kueri SQL server. Tetapi jika tidak ada maka untuk pertama kalinya tidak akan ada kesalahan saat mengeksekusi.

ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
[WITH VALUES]
8
gdmanandamohon
ALTER TABLE tbl_table ADD int_column int NOT NULL DEFAULT(0)

Dari kueri ini Anda bisa menambahkan kolom integer datatype dengan nilai default 0.

8
Sandeep Kumar

Jika defaultnya adalah Null, maka:

  1. Di SQL Server, buka pohon tabel yang ditargetkan
  2. Klik kanan "Kolom" ==> New Column
  3. Ketik kolom Name, Select Type, dan Centang kotak centang Allow Nulls
  4. Dari Bilah Menu, klik Save

Selesai!

7
usefulBee

Anda dapat menggunakan kueri ini:

ALTER TABLE tableName ADD ColumnName datatype DEFAULT DefaultValue;
6
Arun D

SQL Server + Tabel Alter + Tambahkan Kolom + Nilai Default pengidentifikasi ...

ALTER TABLE [TABLENAME] ADD MyNewColumn INT not null default 0 GO
6
Chanukya

Klik kanan pada tabel, klik di bawah nama kolom terakhir, dan masukkan informasi kolom.

Kemudian tambahkan nilai default atau mengikat, sesuatu seperti '1' untuk string atau 1 untuk int.

5

Ini untuk SQL Server:

ALTER TABLE TableName
ADD ColumnName (type) -- NULL OR NOT NULL
DEFAULT (default value)
WITH VALUES

Contoh:

ALTER TABLE Activities
ADD status int NOT NULL DEFAULT (0)
WITH VALUES

Jika Anda ingin menambahkan kendala maka:

ALTER TABLE Table_1
ADD row3 int NOT NULL
CONSTRAINT CONSTRAINT_NAME DEFAULT (0)
WITH VALUES
4
Akhil Singh

langkah 1. PERTAMA ANDA HARUS MENGUBAH TABEL DENGAN MENAMBAH BIDANG

alter table table_name add field field_name data_type

langkah-2 BUAT DEFAULT

USE data_base_name;
GO
CREATE DEFAULT default_name AS 'default_value';

langkah-3 KEMUDIAN ANDA HARUS MELAKUKAN PROSEDUR INI

exec sp_bindefault 'default_name' , 'schema_name.table_name.field_name'

contoh - 

USE master;
GO
EXEC sp_bindefault 'today', 'HumanResources.Employee.HireDate';
4
raju chowrsiya
--Adding New Column with Default Value
ALTER TABLE TABLENAME 
ADD COLUMNNAME DATATYPE NULL|NOT NULL DEFAULT (DEFAULT_VALUE)

OR

--Adding CONSTRAINT And Set Default Value on Column
ALTER TABLE TABLENAME ADD  CONSTRAINT [CONSTRAINT_Name]  DEFAULT 
(DEFAULT_VALUE) FOR [COLUMNNAME]
3
Erfan Mohammadi
ALTER TABLE Table1 ADD Col3 INT NOT NULL DEFAULT(0)
3

Coba dengan kueri di bawah ini:

ALTER TABLE MyTable
ADD MyNewColumn DataType DEFAULT DefaultValue

Ini akan menambahkan kolom baru ke dalam Tabel.

1
Anshul Dubey