টেবিল চেক চুক্তি পরিবর্তন করুন


25

এসকিউএল সার্ভারের অবজেক্ট এক্সপ্লোরার থেকে, কোনও বিদেশী-কী সীমাবদ্ধতা নির্বাচন বা স্ক্রিপ্ট করার সময়, নিম্নলিখিত কোডটি উত্পন্ন হয়।

     USE [MyTestDatabase]
     GO

     ALTER TABLE [dbo].[T2] WITH NOCHECK ADD CONSTRAINT [FK_T2_T1] FOREIGN KEY([T1ID])
     REFERENCES [dbo].[T1] ([T1ID])
     GO

     ALTER TABLE [dbo].[T2] CHECK CONSTRAINT [FK_T2_T1]
     GO

"ALTER TABLE CHECK CONSTRAINT" শেষ বিবৃতিটির উদ্দেশ্য কী? এটি চালানো হয়েছে কিনা তা বিবেচ্য নয়। এটি বিদ্যমান খারাপ ডেটাতে ব্যর্থ হয় না, বা এটি পরিবর্তন করে না যে নতুন ডেটাতে সীমাবদ্ধতা প্রয়োগ করা হবে।

ধন্যবাদ!

উত্তর:


23

এটি নিশ্চিত করে যে সীমাবদ্ধতা তৈরি হওয়ার পরে এটি সক্ষম করা হয়েছে। আপনার ALTER TABLEবিবৃতিতে WITH NOCHECKকোন অংশটি অন্তর্ভুক্ত রয়েছে তা বলেছে যে সীমাবদ্ধতা তৈরির সময় বিদ্যমান খারাপ ডেটা পরীক্ষা না করা উচিত।

লিখিত হিসাবে, বিদ্যমান WITH NOCHECKবিবরণী প্রথম বিবৃতিতে কারণ সীমাবদ্ধতা বিরুদ্ধে পরীক্ষা করা হবে না । দ্বিতীয় বিবৃতি ALTER TABLE [dbo].[T2] NOCHECK CONSTRAINT [FK_T2_T1]জারি করা সীমাবদ্ধতার আওতায় থাকা সারণীতে ভবিষ্যতে যে পরিবর্তন ঘটবে সেটির সীমাবদ্ধতার বিরুদ্ধে চেক সক্ষম করবে, যেটি ইস্যু করা হয়েছে।

লিখিত হিসাবে বিবৃতিগুলি মূলত "এই বিদেশী কী সীমাবদ্ধতা তৈরি করুন তবে এটি বিদ্যমান তথ্যের বিপরীতে পরীক্ষা করবেন না upcoming তথ্যগুলিতে আগত যে কোনও পরিবর্তনের জন্য এটি সক্রিয় করুন।"


আসলে আমি এটি যাচাই করেছি, খারাপ ডেটা থাকলে এটি কোনও পার্থক্য করে না, প্রথম বা দ্বিতীয় লাইন ব্যর্থ হবে না। একটি ব্যর্থতা তৈরি করতে, তাদের দেখতে এইরকম হতে হবে:
ডিলাক্স

2
টেবিলে পরিবর্তন করুন [ডিবিও] [[টি 2] চেক চেক পরীক্ষা দিয়ে দেখুন [এফকে_২_টায়]
ডিলাক্স

ঠিক। তবে আপনি কখন এটির ব্যর্থতা দেখতে পাবেন যখন আপনি কোনও সময় সন্নিবেশ বা সীমাবদ্ধতা লঙ্ঘনকারী একটি আপডেট আপডেট করার চেষ্টা করবেন। দু'টি বিবৃতি কার্যকর করার সময় খারাপ ডেটা উপস্থিত থাকলে তাও ব্যর্থ হবে না।
স্কুইলম্যান

7

আপনার প্রথম বিবৃতি একটি অক্ষম প্রতিবন্ধকতা তৈরি করে। এটি সক্ষম এবং সম্ভবত বিশ্বাসযোগ্য হওয়া দরকার। নিম্নলিখিত অদ্ভুত বাক্য গঠন আপনার সীমাবদ্ধতা সক্ষম এবং বিশ্বাসযোগ্য তা নিশ্চিত করবে:

ALTER TABLE YourTable
      WITH CHECK CHECK CONSTRAINT YourConstraint;

হুগো কর্নেলিসের একটি খুব ভাল ব্লগ পোস্ট রয়েছে যা এটি ভালভাবে ব্যাখ্যা করেছে: আপনি কি নিজের প্রতিবন্ধকতাগুলিতে বিশ্বাস করতে পারেন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.