خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
نحوه استفاده از تابع IDENTITY@@ در SQL Server
تابع IDENTITY@@ یک تابع سیستمی در SQL Server است که برای بدست آوردن آخرین مقدار IDENTITY تولید شده برای هر جدول در Session جاری، صرف نظر از دامنه دستور T-SQL که مقدار را تولید می کند ، استفاده می شود. فرض کنید ، اگر چندین ردیف با استفاده از دستور INSERT یا SELECT INTO ایجاد کرده اید، تابعIDENTITY آخرین مقدار identity ایجاد در انتهای آخرین عبارت را برمی گرداند. اگر این عبارت هیچ جدولی یا جداولی با ستون های IDENTITY را تحت تأثیر قرار ندهد، تابع IDENTITY مقدار NULL را برمی گرداند.
این تابع مقادیر numeric با طول (38,0) را بر می گرداند. برای دیدن نحوه استفاده از تابع IDENTITY، ابتدا دو جدول ایحاد می کنیم و مقادیری را در آنها Insert می کنیم و سپس به IDENTITY می پردازیم.
برای جدول SalesMaster، همانطور که مشاهده می کنید دو رکورد اضافه شده و آخرین identity که در این جدول ایجاد شده، مربوط به ستون SNO است که مقدار آن 2 می باشد.
در مورد جدول Salesdetails، فقط یک رکورد که مقدار آن 1 می باشد.
اکنون یک رکورد در جدول SalesMaster اضافه کرده و نتیجه برگشتی توسط تابع را مشاهده خواهیم کرد.
فرض کنید که در session جاری(53) رکوردی را در جدول درج می کنید ، بنابراین تابع مذکور آخرین مقدار identity اضافه شده در جدول برای session فعلی را برمی گرداند.
همانطور که مشاهده می کنید، بعد از اضافه کردن یک رکورد در جدول تابع @@identity آخرین مقدار identity که برابر با 3 است را بر میگرداند. دقت داشته باشید که این مقدار آخرین مقدار ایجاد شده توسط این Session بود و آن را برگرداند.
اگر درصدد به دست آوردن آخرین مقدار توسط تابع identity برای Session دیگر باشید، تابع مقدار null را برمی گرداند.
پنجره New Query جدید باز کرده و با استفاده از تابع IDENTITY، در Sesstion جدید، آخرین مقدار identity را بدست آورید.
همانطور که می بینید مقدار NULL می باشد. این بدان معناست که تابع مذکور فقط آخرین مقدار identity با توجه به توضیحات فوق را در session جاری بر میگرداند.
اکنون یک رکورد به هر جدول اضافه می کنیم و سپس آخرین مقدار identity را با استفاده از تابع IDENTITY مشاهده می کنیم.
همانطور که مشاهده می کنید، فقط آخرین مقدار identity برای جدول SalesDetails را برگرداند چرا که اسکریپت اضافه کردن رکورد برای جدول SalesDetails در واقع آخرین اسکریپت بود.
این تابع مقادیر numeric با طول (38,0) را بر می گرداند. برای دیدن نحوه استفاده از تابع IDENTITY، ابتدا دو جدول ایحاد می کنیم و مقادیری را در آنها Insert می کنیم و سپس به IDENTITY می پردازیم.
CREATE TABLE SALESMASTER(SNO INT IDENTITY(1,1), PRODUCTS VARCHAR(30))
INSERT INTO SALESMASTER (PRODUCTS) values
('Spare parts X-10'), ('Spare parts XII-16')
CREATE TABLE SALESDETAILS(SNO INT IDENTITY(1,1), PURCHASEDDATE DATE)
INSERT INTO SALESDETAILS (PURCHASEDDATE) VALUES ('2018/01/01')
برای جدول SalesMaster، همانطور که مشاهده می کنید دو رکورد اضافه شده و آخرین identity که در این جدول ایجاد شده، مربوط به ستون SNO است که مقدار آن 2 می باشد.
در مورد جدول Salesdetails، فقط یک رکورد که مقدار آن 1 می باشد.
اکنون یک رکورد در جدول SalesMaster اضافه کرده و نتیجه برگشتی توسط تابع را مشاهده خواهیم کرد.
فرض کنید که در session جاری(53) رکوردی را در جدول درج می کنید ، بنابراین تابع مذکور آخرین مقدار identity اضافه شده در جدول برای session فعلی را برمی گرداند.
همانطور که مشاهده می کنید، بعد از اضافه کردن یک رکورد در جدول تابع @@identity آخرین مقدار identity که برابر با 3 است را بر میگرداند. دقت داشته باشید که این مقدار آخرین مقدار ایجاد شده توسط این Session بود و آن را برگرداند.
اگر درصدد به دست آوردن آخرین مقدار توسط تابع identity برای Session دیگر باشید، تابع مقدار null را برمی گرداند.
پنجره New Query جدید باز کرده و با استفاده از تابع IDENTITY، در Sesstion جدید، آخرین مقدار identity را بدست آورید.
SELET @@IDENTITY AS checkidentity_session
همانطور که می بینید مقدار NULL می باشد. این بدان معناست که تابع مذکور فقط آخرین مقدار identity با توجه به توضیحات فوق را در session جاری بر میگرداند.
@@IDENTITY function using multiple tables
همانطور که مشاهده می کنید، جدول salesMaster دارای سه رکورد بوده و آخرین مقدار ستون identity آن برابر با 3 است. در حالی که در جدول SalesDetails یک رکورد وجود دارد و آخرین مقدار برای ستون identity آن 1 است.اکنون یک رکورد به هر جدول اضافه می کنیم و سپس آخرین مقدار identity را با استفاده از تابع IDENTITY مشاهده می کنیم.
همانطور که مشاهده می کنید، فقط آخرین مقدار identity برای جدول SalesDetails را برگرداند چرا که اسکریپت اضافه کردن رکورد برای جدول SalesDetails در واقع آخرین اسکریپت بود.
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: