Saya memiliki batasan kunci asing di meja saya, saya ingin menambahkan ON DELETE CASCADE ke dalamnya.
Saya sudah mencoba ini:
ubah tabel child_table_name ubah batasan fk_name kunci asing (child_column_name) referensi parent_table_name (parent_column_name) di delete cascade;
Tidak bekerja
EDIT:
Kunci asing sudah ada, ada data di kolom kunci asing.
Pesan kesalahan yang saya dapatkan setelah menjalankan pernyataan:
ORA-02275: batasan referensial seperti itu sudah ada dalam tabel
Jawaban:
Anda tidak dapat menambah
ON DELETE CASCADE
kendala yang sudah ada. Anda harusdrop
dan kembalicreate
kendala. The dokumentasi menunjukkan bahwaMODIFY CONSTRAINT
klausul hanya dapat memodifikasi keadaan kendala (yaitu:ENABLED/DISABLED
...).sumber
Pertama
drop
kunci asing Anda dan coba perintah Anda di atas, masukkanadd constraint
bukanmodify constraint
. Sekarang ini perintahnya:sumber
PL * SQL ini akan menulis ke skrip DBMS_OUTPUT yang akan menghapus setiap batasan yang tidak memiliki penghapusan kaskade dan membuatnya kembali dengan hapus kaskade.
CATATAN: menjalankan output skrip ini adalah RISIKO ANDA SENDIRI. Terbaik untuk membaca skrip yang dihasilkan dan mengeditnya sebelum menjalankannya.
sumber
Seperti yang dijelaskan sebelumnya:
Seperti yang Anda lihat, perintah itu harus dipisahkan, pertama-tama menjatuhkan lalu menambahkan.
sumber
go
menggunakan semi-colon seperti pada postgres dan SqlServer itu sendiri. Tetapi kode inti tetap adalah standar sql. Tes dengan semi-titik dua, saya baru saja mengubahnya[
atau]
yang valid dalam SQL standar (dan Oracle). Oracle juga tidak mendukungon update
klausa untuk kunci asing.[
]
apakah SqlServer spesifik. Saya akan membersihkannya lebih banyak. Tentangon update
saya tidak bisa mengatakan apa-apa tentang.Jawaban untuk PENGGUNA MYSQL:
sumber
Bagi siapa pun yang menggunakan MySQL:
Jika Anda menuju ke
PHPMYADMIN
halaman web Anda dan menavigasi ke tabel yang memiliki kunci asing yang ingin Anda perbarui, yang harus Anda lakukan adalah klik yangRelational view
terletak diStructure
tab dan ubahOn delete
opsi menu pilih keCascade
.Gambar yang ditunjukkan di bawah ini:
sumber
Ini adalah solusi praktis! Saya menggunakan SQL Server 2008 R2.
Saat Anda ingin memodifikasi batasan FK dengan menambahkan ON DELETE / UPDATE CASCADE, ikuti langkah-langkah ini:
NOMOR 1:
Klik kanan pada batasan dan klik untuk Memodifikasi
NOMOR 2:
Pilih kendala Anda di sisi kiri (jika ada lebih dari satu). Kemudian di sisi kanan, taruh titik " INSERT And UPDATE Specification " dan tentukan tindakan pada baris Hapus Aturan atau Perbarui Aturan yang sesuai dengan kebutuhan Anda. Setelah itu, tutup kotak dialog.
NOMOR 3:
Langkah terakhir adalah menyimpan modifikasi tesis ini (tentu saja!)
PS: Ini menyelamatkan saya dari banyak pekerjaan karena saya ingin memodifikasi kunci primer yang dirujuk di tabel lain.
sumber
Jika Anda ingin mengubah kunci asing tanpa menjatuhkannya, Anda dapat melakukannya:
sumber
sumber