Saya ingin menambahkan kolom ke database warisan yang ada dan menulis prosedur yang dapat saya gunakan untuk menetapkan nilai yang berbeda pada setiap record. Sesuatu seperti menambahkan kolom dan membuat datanya secara otomatis.
Seperti, jika saya menambahkan kolom baru bernama "ID" (angka), saya ingin menginisialisasi nilai unik ke setiap record. Jadi, kolom ID saya akan memiliki catatan dari say 1 to 1000
.
Bagaimana aku melakukan itu?
sql
sql-server
Adhip Gupta
sumber
sumber
Jawaban:
Ini akan tergantung pada database tetapi untuk SQL Server, ini dapat dicapai sebagai berikut:
sumber
Prevent saving changes that require table re-creation
centang hapus centang pada kotak itu dan Anda akan dapat menambahkan kolom identitas bahkan dengan menggunakan gui.Ini akan membantu jika Anda memposting database SQL apa yang Anda gunakan. Untuk MySQL Anda mungkin menginginkan auto_increment:
Tidak yakin apakah ini menerapkan nilai secara retroaktif. Jika tidak, Anda hanya dapat mengulang nilai-nilai Anda dengan prosedur tersimpan atau dalam program sederhana (selama tidak ada orang lain yang menulis ke database) dan mengatur penggunaan
LAST_INSERT_ID()
fungsi untuk menghasilkan nilai id.sumber
untuk oracle Anda bisa melakukan sesuatu seperti di bawah ini
sumber
Dan yang setara dengan Postgres (baris kedua wajib hanya jika Anda ingin "id" menjadi kunci):
sumber
Hanya menggunakan ALTER TABLE seharusnya bekerja. Tambahkan kolom dengan jenis yang tepat dan bendera IDENTITAS dan itu akan melakukan trik
Lihat artikel MSDN ini http://msdn.microsoft.com/en-us/library/aa275462(SQL.80).aspx di sintaks ALTER TABLE
sumber
untuk tipe data UNIQUEIDENTIFIER di sql server coba ini
Jika Anda ingin membuat kunci utama dari kolom itu gunakan ini
sumber
Bergantung pada database karena setiap database memiliki cara berbeda untuk menambahkan nomor urut. Saya akan mengubah tabel untuk menambahkan kolom kemudian menulis skrip db di groovy / python / etc untuk dibaca dalam data dan memperbarui id dengan urutan. Setelah data ditetapkan, saya akan menambahkan urutan ke tabel yang dimulai setelah nomor teratas. Setelah data disetel, setel kunci utama dengan benar.
sumber
Jika Anda tidak ingin kolom baru Anda bertipe
IDENTITY
(auto-increment), atau Anda ingin lebih spesifik tentang urutan penomoran baris, Anda dapat menambahkan kolom tipeINT NULL
dan mengisinya seperti ini. Dalam contoh saya, kolom baru disebut MyNewColumn dan kolom kunci utama yang ada untuk tabel disebut MyPrimaryKey.Ini berfungsi di SQL Sever 2005 dan yang lebih baru, yaitu versi yang mendukung
ROW_NUMBER()
sumber