Mengubah ukuran kolom di SQL Server

281

Cara mengubah ukuran kolom dari salarykolom dalam employeetabel dari numeric(18,0)menjadinumeric(22,5)

Sree
sumber

Jawaban:

507
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Darren
sumber
6
Hati-hati, jika Anda mengubah kolom dalam data yang sangat besar. Anda dapat menyebabkan kerusakan (tetap pada lingkungan saya).
DavidTheDev
55
Penting juga bahwa jika kolomnya adalah dengan atribut NOT NULLmaka harus disebutkan dalam kueri yang lain ia akan mengaturnya secara NULLdefault. ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Suvendu Shekhar Giri
8
Jika Anda memiliki indeks pada kolom itu Anda harus menjatuhkannya, kemudian jalankan kode tabel alter dan kemudian buat indeks lagi
Sr.PEDRO
43
alter table Employee alter column salary numeric(22,5)
Priyank Patel
sumber
21
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)
Durgesh Pandey
sumber
19

Berjalan ALTER COLUMNtanpa menyebutkan atribut NOT NULLakan menghasilkan kolom yang diubah menjadi nullable, jika sudah tidak. Oleh karena itu, Anda harus terlebih dahulu memeriksa apakah kolom tersebut dapat dibatalkan dan jika tidak, tentukan atribut NOT NULL. Atau, Anda dapat menggunakan pernyataan berikut yang memeriksa nullability kolom sebelumnya dan menjalankan perintah dengan atribut yang tepat.

IF COLUMNPROPERTY(OBJECT_ID('Employee', 'U'), 'Salary', 'AllowsNull')=0
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
ELSE        
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NULL
Hamid Heydarian
sumber
6

Pilih tabel -> Desain -> ubah nilai dalam Tipe Data yang ditunjukkan pada Gambar berikut.

masukkan deskripsi gambar di sini

Simpan desain tabel.

arnav
sumber
periksa dengan benar mungkin Anda melewatkan beberapa langkah.
arnav
7
Alat -> Opsi ... /> Desainer -> Desainer Tabel dan Database - hapus centang "Cegah perubahan simpanan yang membutuhkan pembuatan ulang tabel"
7anner
Untuk sebagian besar hal, saya lebih suka scripting. Tapi untuk perubahan kolom, saya suka UI. Tidak harus ingat untuk memeriksa TIDAK NULL atau perhitungan atau properti kolom tambahan. Cukup klik Simpan (setelah Anda membuat pengaturan berubah dalam SSMS sebagai @ 7 catatan lebih lanjut).
Jacob H
1

Pendekatan menarik dapat ditemukan di sini: Cara Memperbesar Kolom Anda Tanpa Downtime oleh spaghettidba

Jika Anda mencoba memperbesar kolom ini dengan perintah “ALTER TABLE”, Anda harus menunggu SQLServer melewati semua baris dan menulis tipe data baru

ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;

Untuk mengatasi ketidaknyamanan ini, ada pil pembesaran kolom ajaib yang dapat diambil oleh meja Anda, dan ini disebut Row Compression. (...) Dengan Kompresi Baris, kolom ukuran tetap Anda hanya dapat menggunakan ruang yang dibutuhkan oleh tipe data terkecil di mana data aktual cocok.

Ketika tabel dikompresi pada ROWlevel, maka ALTER TABLE ALTER COLUMNhanya operasi metadata.

Lukasz Szozda
sumber