Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggugurkan Kekangan Lalai SQL Tanpa Mengetahui Nama Mereka?

Bagaimana untuk Menggugurkan Kekangan Lalai SQL Tanpa Mengetahui Nama Mereka?

Patricia Arquette
Lepaskan: 2024-12-30 18:18:13
asal
374 orang telah melayarinya

How to Drop SQL Default Constraints Without Knowing Their Names?

Menggugurkan Kekangan Lalai SQL Tanpa Mengetahui Nama Mereka

Dalam Pelayan SQL, mengenal pasti dan melepaskan kekangan lalai boleh menjadi mencabar, terutamanya apabila nama mereka adalah tidak diketahui atau tidak konsisten. Untuk menangani perkara ini, penjanaan pertanyaan dinamik boleh digunakan untuk mengenal pasti dan mengalih keluar kekangan lalai dengan berkesan.

Jawapan Dikembangkan:

Memperluas skrip yang dikongsi oleh Mitch Wheat, lebih pendekatan komprehensif melibatkan penjanaan dan pelaksanaan arahan DROP CONSTRAINT secara dinamik. Begini cara ia berfungsi:

declare @schema_name nvarchar(256)
declare @table_name nvarchar(256)
declare @col_name nvarchar(256)
declare @Command  nvarchar(1000)

set @schema_name = N'MySchema'
set @table_name = N'Department'
set @col_name = N'ModifiedDate'

select @Command = 'ALTER TABLE ' + @schema_name + '.[' + @table_name + '] DROP CONSTRAINT ' + d.name
 from sys.tables t
  join sys.default_constraints d on d.parent_object_id = t.object_id
  join sys.columns c on c.object_id = t.object_id and c.column_id = d.parent_column_id
 where t.name = @table_name
  and t.schema_id = schema_id(@schema_name)
  and c.name = @col_name

--print @Command

execute (@Command)
Salin selepas log masuk

Penjelasan:

  • Skrip ini membina perintah DROP CONSTRAINT secara dinamik dengan menanyakan jadual metadata (sys.tables, sys .default_constraints dan sys.columns).
  • Ia menentukan nama skema, nama jadual dan nama lajur untuk mengenal pasti kekangan lalai sasaran.
  • Arahan yang dijana kemudiannya dicetak dan dilaksanakan secara dinamik, membolehkan anda melepaskan kekangan lalai tanpa mengetahui tepatnya nama.

Faedah:

  • Mengendalikan kekangan yang dinamakan secara tidak konsisten, seperti "DF_SomeTable_ColName" atau "DF_SmoeTable_ColName."
  • >
  • >
  • Mengelakkan ralat SQL dengan menjana arahan yang betul secara dinamik.

Atas ialah kandungan terperinci Bagaimana untuk Menggugurkan Kekangan Lalai SQL Tanpa Mengetahui Nama Mereka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan