استفاده از Guid
سلام خدمت همه اساتید ITPro ، سوال من سه بخش داره، اول اینکه متغیر Guid در زمان تعریف بر چ اساسی کدهای خود را تولید میکند. و سوال دوم اینکه راهی هست که بفهمیم این کد ها بر اساس چه چیزی تولید می شود. و سوال آخر، اگر من بخواهم کاملا سفارشی Guid تولید کنم، بر فرض مثال قبل از ذخیره شدن اطلاعات رکورد، Guid من هم بر اساس اطلاعات همان رکورد فرآیند تولید کد را انجام دهد.
میخوام بدونم راهی هست برای این کار.
هدفم هم اینه که من ب جای اینکه بیام چندین فیلد با هم مقایسه کنم و به نتیجه برسم، فقط کد Guid که تولید میشه رو بررسی کنم و به نتیجه برسم.، یعنی کل فرآیند Compare تنها با یک فیلد انجام شود. دلیل این فرضیه هم اینه که اگه بشه کد Guid بر اساس اطلاعات یک رکورد تولید کرد، بعدا اگر اطلاعات آن رکورد برابر با کد Guid جدیدی (که اون هم بر اساس همون اطلاعات ذخیره شده قبلی می باشد)تولید می شود باشد، پس شرط من True می باشد.
امیدوارم منظورمو رسونده باشم.
1 پاسخ
سلام، وقت بخیر
برای آشنایی با نحوه ایجاد Guid این لینک رو مطالعه کنید.
اما در مورد سوال اصلیتون، بنده فرض می کنم که شما اطلاعات رو داخل SQL Server نگهداری می کنید، اما این راهکار رو می تونید جای دیگه هم استفاده کنید. به نظرم برای اینکه ستونی بر اساس محتویات سایر ستون های یک سطر داشته باشید، از تابع HASHBYTES استفاده کنید، این تابع بر اساس مقداری که بهش داده میشه یک رشته ایجاد می کنه که با توجه به مقادیر ستون ها ایجاد میشه، در صورتی که مقادیر ستون ها در دو یا چند سطر یکسان باشه، Hash ایجاد شده هم یکسان خواهد بود. یک مثال ساده:
SELECT HASHBYTES('MD5','ITPro.ir')
حالا اگه شما بر اساس مقدار میخوایید هم داخل کوئری می تونید اینکار رو انجام بدید:
SELECT
Col1,
Col2,
Col3,
(SELECT HASHBYTES('MD5',Col1+Col2+Col3))
FROM
SampleTable
یک راه دیگه هم ایجاد Computed Column هست که به جدولتون یک ستون اضافه کنید که مقدار Hash رو به صورت خودکار ایجاد کنه بر اساس مقادیر ستون ها:
create table #SampleTable
(
[Id] int identity not null,
[Col1] nvarchar(100) not null,
[Col2] nvarchar(100) not null,
[Col3] nvarchar(100) not null,
[RowHash] as HASHBYTES('md5',Col1+Col2+Col3)
);
go