Saya mencoba menambahkan kolom baru yang akan menjadi kunci asing. Saya telah dapat menambahkan kolom dan batasan kunci asing menggunakan dua ALTER TABLE
perintah terpisah :
ALTER TABLE one
ADD two_id integer;
ALTER TABLE one
ADD FOREIGN KEY (two_id) REFERENCES two(id);
Apakah ada cara untuk melakukan ini dengan satu perintah ALTER TABLE, bukan dua? Saya tidak dapat menemukan apa pun yang berhasil.
Jawaban:
Seperti yang sering terjadi pada pertanyaan terkait SQL, itu tergantung pada DBMS. Beberapa DBMS memungkinkan Anda untuk menggabungkan operasi tabel ALTER dipisahkan oleh koma. Sebagai contoh...
Sintaks Informix :
Sintaks untuk IBM DB2 LUW serupa, mengulangi kata kunci ADD tetapi (jika saya membaca diagram dengan benar) tidak memerlukan koma untuk memisahkan item yang ditambahkan.
Sintaks Microsoft SQL Server :
Beberapa yang lain tidak memungkinkan Anda untuk menggabungkan operasi ALTER TABLE seperti itu. SQL Standar hanya memungkinkan operasi tunggal dalam pernyataan ALTER TABLE, jadi dalam SQL Standar, itu harus dilakukan dalam dua langkah.
sumber
Dalam MS-SQLServer:
sumber
Untuk SQL Server harus seperti itu
sumber
Dalam MS SQL SERVER:
Dengan nama kunci asing yang ditentukan pengguna
Tanpa nama kunci asing yang ditentukan pengguna
sumber
Di Oracle :
sumber
Pembaruan 2020
Itu pertanyaan yang lumayan lama, tapi orang masih kembali ke sana. Jika jawaban di atas tidak membantu Anda, pastikan Anda menggunakan tipe data yang sama untuk kolom baru seperti id pada tabel lainnya.
Dalam kasus saya, saya menggunakan Laravel dan saya menggunakan "unsigned integer" untuk semua id saya karena tidak ada gunanya memiliki LOL id negatif.
Jadi untuk itu, permintaan SQL mentah akan berubah seperti ini:
Saya harap ini membantu
sumber
Anda dapat melakukannya seperti di bawah ini di SQL Server
sumber
PostgreSQL DLL untuk menambahkan kolom FK:
sumber
ALTER TABLE TableName ADD NewColumnName INTEGER, FOREIGN KEY(NewColumnName) REFERENCES [ForeignKey_TableName](Foreign_Key_Column)
sumber
Untuk DB2, sintaksnya adalah:
sumber
Jika Anda juga perlu menambahkan nilai default jika Anda sudah memiliki beberapa baris dalam tabel kemudian tambahkan DEFAULT val
sumber
Coba ini:
sumber