kzen.dev
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
Casey Crookston
Casey Crookston
Question

ALTER TABLE DROP KOLOM gagal karena satu atau lebih objek akses kolom ini

Saya mencoba untuk melakukan hal ini:

ALTER TABLE CompanyTransactions DROP COLUMN Created

Tapi saya mendapatkan ini:

Msg 5074, Tingkat 16, Negara bagian 1, Baris 2 Objek 'DFCompanyTrCreat__0CDAE408' tergantung pada kolom 'Buat'. Msg 4922, Tingkat 16, Negara Bagian 9, Baris 2 ALTER TABLE DROP KOLOM Dibuat gagal karena satu atau lebih objek akses kolom ini.

Ini adalah kode pertama tabel. Entah bagaimana migrasi telah menjadi kacau dan saya mencoba untuk secara manual memutar kembali beberapa berubah.

Aku punya tidak ada tahu apa ini adalah:

DF__CompanyTr__Creat__0CDAE408
49 2017-04-21T18:11:28+00:00 5
Pemrograman
sql
c#
sql-server
code-first
Solution / Answer
 SqlZim
SqlZim
21 April 2017 в 6:14
2017-04-21T18:14:26+00:00
Lebih
Sumber
Sunting
#33325940

Anda harus menghapus kendala dari kolom sebelum menghapus kolom. Nama yang anda referensi adalah default kendala.

misalnya

alter table CompanyTransactions drop constraint [df__CompanyTr__Creat__0cdae408];
alter table CompanyTransactions drop column [Created];
91
0
Kecerdasan buatan untuk mengurai produk dari halaman mana pun
productapi.dev
 malloc4k
malloc4k
30 Januari 2018 в 7:13
2018-01-30T19:13:59+00:00
Lebih
Sumber
Sunting
#33325941

Yang @SqlZim's jawaban yang benar tetapi hanya untuk menjelaskan mengapa ini bisa terjadi. I've punya masalah serupa dan ini disebabkan oleh sangat bersalah hal: menambahkan nilai default untuk kolom

ALTER TABLE MySchema.MyTable ADD 
  MyColumn int DEFAULT NULL;

Tapi di ranah MS SQL Server nilai default pada colum adalah KENDALA. Dan seperti setiap kendala ini memiliki identifier. Dan anda tidak bisa drop kolom jika digunakan dalam KENDALA.

Jadi apa yang dapat anda benar-benar melakukannya menghindari masalah seperti ini selalu memberikan default kendala a explicit nama, misalnya:

ALTER TABLE MySchema.MyTable ADD 
  MyColumn int NULL,
  CONSTRAINT DF_MyTable_MyColumn DEFAULT NULL FOR MyColumn;

Anda'll masih harus drop constraint sebelum menjatuhkan kolom, tetapi anda akan setidaknya tahu nama depan.

15
0
Kecerdasan buatan untuk mengurai produk dari halaman mana pun
productapi.dev
 vibs2006
vibs2006
27 Desember 2018 в 10:34
2018-12-27T10:34:46+00:00
Lebih
Sumber
Sunting
#33325942

Seperti yang sudah tertulis dalam jawaban yang anda butuhkan untuk menjatuhkan kendala (dibuat secara otomatis oleh sql) yang berkaitan dengan semua kolom yang anda mencoba untuk menghapus.

Melakukan hal-hal berikut ini langkah-langkah untuk melakukan hal yang diperlukan.

  1. Dapatkan Nama semua Kendala menggunakan sp_helpconstraint yang merupakan sistem prosedur yang tersimpan utilitas mengeksekusi berikut exec sp_helpconstraint &#39;<meja anda nama>&#39;
  2. Setelah anda mendapatkan nama constraint kemudian copy kendala yang nama dan mengeksekusi pernyataan berikutnya saya.e alter table <your_table_name> drop constraint <constraint_name_that_you_copied_in_1> (It'akan menjadi sesuatu seperti ini atau hanya format yang sama)
  3. Setelah anda menghapus kendala maka anda dapat menghapus 1 atau lebih kolom dengan menggunakan metode konvensional saya.e Alter table <YourTableName> Drop kolom column1, column2 dll
4
0
Akash Yellappa
Akash Yellappa
7 Agustus 2019 в 8:16
2019-08-07T20:16:42+00:00
Lebih
Sumber
Sunting
#33325944

Anda perlu melakukan beberapa hal:

  1. Anda harus terlebih dahulu memeriksa apakah membatasi keluar di informasi skema
  2. kemudian anda perlu untuk query dengan bergabung sys.default_constraints dan sys.kolom jika kolom dan default_constraints memiliki objek yang sama id
  3. Ketika anda bergabung di langkah 2, anda akan mendapatkan kendala nama dari default_constraints. Kau jatuhkan kendala. Berikut adalah contoh dari satu tetes seperti yang saya lakukan.

-- 1. Menghapus kendala dan drop kolom JIKA EXISTS(SELECT * DARI INFORMATION_SCHEMA.KOLOM WHERE TABLE_NAME = N&#39;TABLE_NAME&#39; DAN COLUMN_NAME = N&#39;LOWER_LIMIT&#39;) BEGIN MENYATAKAN @sql NVARCHAR(MAX) SEMENTARA 1=1 BEGIN PILIH TOP 1 @sql = N&#39;alter table [TABLE_NAME] drop constraint [&#39;+dc.nama+N&#39;]&#39; DARI sys.default_constraints dc BERGABUNG sys.kolom c PADA c.default_object_id = dc.object_id Di MANA dc.parent_object_id = OBJECT_ID(&#39;[TABLE_NAME]&#39;) DAN c.nama = N&#39;LOWER_LIMIT&#39; JIKA @@ROWCOUNT = 0 BEGIN CETAK &#39;DIHAPUS Kendala pada kolom LOWER_LIMIT&#39; ISTIRAHAT END EXEC (@sql) END; ALTER TABLE TABLE_NAME DROP KOLOM LOWER_LIMIT; CETAK &#39;DIHAPUS kolom LOWER_LIMIT&#39; END LAIN CETAK &#39;Kolom LOWER_LIMIT tidak ada&#39; PERGI

1
0
Kecerdasan buatan untuk mengurai produk dari halaman mana pun
productapi.dev
Jayant Wexoz
Jayant Wexoz
4 Juli 2019 в 6:46
2019-07-04T06:46:00+00:00
Lebih
Sumber
Sunting
#33325943

Ketika anda mengubah kolom datatype yang anda butuhkan untuk mengubah kendala utama untuk setiap database

  alter table CompanyTransactions drop constraint [df__CompanyTr__Creat__0cdae408];
Salman Zafar
Salman Zafar
Jawaban edit 4 Juli 2019 в 7:08
0
0
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Анна Литвиненко
Terdaftar 1 hari yang lalu
2
Inessa bu
Terdaftar 1 bulan yang lalu
3
Denis Babushkin
Terdaftar 1 bulan yang lalu
4
asakuno asakuno
Terdaftar 1 bulan yang lalu
5
aldo salerno
Terdaftar 1 bulan yang lalu
Kecerdasan buatan untuk mengurai produk dari halaman mana pun
productapi.dev
ES
ID
JA
ZH
© kzen.dev 2023
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi