আমি অ্যাডভেঞ্চার ওয়ার্কস ২০১২ ডাটাবেসে প্রায় খনন করেছি এবং কয়েকটি টেবিলে ব্যবহৃত Row_GUID দেখুন।
আমার প্রশ্নের 2 টি অংশ রয়েছে:
কখন আমাকে একটি Row_GUID কলাম অন্তর্ভুক্ত করা উচিত?
একটি Row_GUID কলামের ব্যবহার এবং সুবিধা কী?
আমি অ্যাডভেঞ্চার ওয়ার্কস ২০১২ ডাটাবেসে প্রায় খনন করেছি এবং কয়েকটি টেবিলে ব্যবহৃত Row_GUID দেখুন।
আমার প্রশ্নের 2 টি অংশ রয়েছে:
কখন আমাকে একটি Row_GUID কলাম অন্তর্ভুক্ত করা উচিত?
একটি Row_GUID কলামের ব্যবহার এবং সুবিধা কী?
উত্তর:
ROWGUIDCOL
প্রাথমিকভাবে MERGE প্রতিরূপের জন্য ব্যবহৃত হয় , এবং এটির জন্যও প্রয়োজনীয় হয়FILESTREAM
তবে আপনি যে কোনও দৃশ্যে ব্যবহার করতে পারেন যেখানে আপনি অপরিবর্তনীয় কলামটি প্রাথমিক কী থেকে আলাদা করতে চান (উদাহরণস্বরূপ যেখানে প্রাথমিক কী মান পরিবর্তন করতে পারে তবে আপনি এখনও হতে চান পরিবর্তনের আগে এবং পরে কোন সারিটি ছিল তা বলতে সক্ষম)।
USE tempdb;
GO
CREATE TABLE dbo.example
(
name sysname PRIMARY KEY,
rowguid uniqueidentifier NOT NULL DEFAULT NEWID() ROWGUIDCOL
);
INSERT dbo.example(name) VALUES(N'bob'),(N'frank');
SELECT * FROM dbo.example;
UPDATE dbo.example SET name = N'pat' WHERE name = N'bob';
UPDATE dbo.example SET name = N'bob' WHERE name = N'frank';
SELECT * FROM dbo.example;
DROP TABLE dbo.example;
এখন, যদি প্রতিলিপি, বা আপনার অ্যাপ্লিকেশন, বা আপনি কী মনোযোগ দিচ্ছেন, তা লক্ষ্য করবে:
দেখুন এখানে , এখানে , এবং "স্ন্যাপশট বিবেচ্য বিষয়" বিভাগে এখানে আরও তথ্যের জন্য।
কলামটিকে ROWGUIDCOL
এটির মাধ্যমে উল্লেখ করার অনুমতি দেয়$ROWGUID
প্রশ্নের । এটি কোয়েরিকে আরও জেনেরিক তৈরি করার অনুমতি দেয় যেহেতু প্রতিটি টেবিল অনুযায়ী আপনার "অনন্য" কলামটি কী হবে (যথাক্রমে @ অ্যারন এবং @ মার্টিন দ্বারা উল্লিখিত রেপ্লিকেশন এবং ফাইল স্ট্রিমের মতো বৈশিষ্ট্যগুলির জন্য এটি বেশ কার্যকর) )। আপনার অ্যাপ্লিকেশন স্তরে বা ডায়নামিক এসকিউএল এমনকি এমন কোনও কোয়েরি তৈরি করা যেতে পারে, যা SELECT $ROWGUID AS [ID] FROM {table_name}
টেবিলের একটি তালিকাতে পুনরাবৃত্তি করার মতো কিছু করে।
কেবল মনে রাখবেন যে ROWGUIDCOL
পদবীটি স্বতন্ত্রতা প্রয়োগ করে না । আপনার এখনও এটিকে প্রয়োগ করতে হবে একটি প্রাথমিক কী, একটি অনন্য সূচক বা কোনও অনন্য বাধা via বা এই বিকল্পটি কলামটি অপরিবর্তনীয় তা প্রয়োগ করে না। তার জন্য আপনার একটি AFTER UPDATE
ট্রিগার বা কলাম স্তর স্তরের অনুমতি প্রয়োজনDENY UPDATE
।
উদাহরণ স্বরূপ:
SET NOCOUNT ON;
CREATE TABLE #RowGuidColTest
(
ID UNIQUEIDENTIFIER NOT NULL DEFAULT (NEWID()) ROWGUIDCOL,
SomeValue INT
);
INSERT INTO #RowGuidColTest (SomeValue) VALUES (12), (14), (1231);
DECLARE @Search UNIQUEIDENTIFIER;
SELECT TOP (1) @Search = $ROWGUID
FROM #RowGuidColTest;
SELECT @Search AS [@Search]
SELECT *, $ROWGUID AS [$ROWGUID]
FROM #RowGuidColTest;
SELECT *
FROM #RowGuidColTest
WHERE $ROWGUID = @Search;
-- No enforced uniqueness without a PK, Unique Index, or Unique Constraint.
UPDATE tmp
SET $ROWGUID = @Search
FROM #RowGuidColTest tmp
SELECT *
FROM #RowGuidColTest
WHERE $ROWGUID = @Search;
এর মতো কিছু ফেরত দেয়:
@Search
E7166D18-5003-4D20-8983-E2402472CF82
ID SomeValue $ROWGUID
E7166D18-5003-4D20-8983-E2402472CF82 12 E7166D18-5003-4D20-8983-E2402472CF82
44FD48A4-AF38-41BF-AE4E-8A12D26B5B57 14 44FD48A4-AF38-41BF-AE4E-8A12D26B5B57
2D50C5C7-1E43-4ADA-A03B-ED202FC88D20 1231 2D50C5C7-1E43-4ADA-A03B-ED202FC88D20
ID SomeValue
E7166D18-5003-4D20-8983-E2402472CF82 12
ID SomeValue
E7166D18-5003-4D20-8983-E2402472CF82 12
E7166D18-5003-4D20-8983-E2402472CF82 14
E7166D18-5003-4D20-8983-E2402472CF82 1231
একইভাবে, $IDENTITY
একটি IDENTITY
কলাম রয়েছে এমন টেবিলগুলির জন্য কেউ ব্যবহার করতে পারে ।