خانه SQL Server آشنایی با Output Clause SQL Server نوشته شده توسط: ایمان باقری ۱۶ آبان ۱۴۰۰ زمان مطالعه: 16 دقیقه ۰ (۰) مقدمه گاهی لازم است تا مقادیر تغییر یافته در یک جدول را نگهداری کنید یا در صورتی که بطور ناخواسته مقادیری را حذف یا ویرایش کردید بتوانید مقادیر اصلی را بازیابی کنید. برای این منظور می توان از عبارت Output در T-SQL استفاده نمود. به عبارت دیگر، می توانید تاثیر حاصل از عملیات Insert، Update و Delete را در یک جدول موقتی ذخیره و در صورت لزوم از آن استفاده نمایید. جدول زیر را در نظر بگیرید IF OBJECT_ID ('TBLProduct', 'U') IS NOT NULL DROP TABLE dbo.TBLProduct; CREATE TABLE [dbo].[TBLProduct]( [ProductID] [int] IDENTITY(1,1) NOT NULL, [Name] Nvarchar(50) NOT NULL, [RegCity] Nvarchar(10) NOT NULL, [Color] Nvarchar(10) NOT NULL, [Count] int NOT NULL, [ModifiedDate] [datetime] NOT NULL ) ON [PRIMARY] Insert into [dbo].[TBLProduct]([Name],[RegCity],[Color],[Count],[ModifiedDate]) Values(N'قطعه ۱',N'تهران',N'زرد', ۱۵,getdate()), (N'قطعه ۲',N'تهران',N'زرد', ۱۰,getdate()-1), (N'قطعه ۳',N'کرمان',N'آبی', ۱۱,getdate()+2), (N'قطعه ۶',N'کرج',N'سبز', ۱۷,getdate()), (N'قطعه ۵',N'اصفهان',N'قرمز', ۴۳,getdate()-3), (N'قطعه ۴',N'تهران',N'قرمز', ۱۸,getdate()+7); در این جدول شش رکورد با مقادیر متفاوت تعریف شده اند. حال اگر بخواهیم تا عملیات DML را روی این جدول انجام دهیم و قصد ذخیره تغییرات را در جدولی دیگر در دیتابیس داشته باشیم می توانیم این کار را با عبارت Output انجام دهیم. فرض کنید بخواهیم قطعه شماره ۳ و ۶ را از جدول حذف کنیم و در نهایت بخواهیم این دو رکورد بصورت خروجی در یک جدول موقتی ذخیره شود می توان از دستور زیر استفاه نماییم. declare @TblProduct_Temp as Table ( [Name] [nvarchar](50) ,[RegCity] [nvarchar](10) , [Color][nvarchar](10), [Count] [int], [ModifiedDate] [datetime] ); delete TBLProduct output deleted.[Name],deleted.[RegCity],deleted.[Color],deleted.[Count],deleted.[ModifiedDate] into @TblProduct_Temp where [Name] in (N'قطعه ۳', N'قطعه ۶'); select * from @TblProduct_Temp; می بینید که دو قطعه ۳ و ۶ از جدول حذف شده اند و در یک جدول موقتی ذخیره و قابل مشاهده هستند. می توان این تغییرات را در یک جدول بر روی دیسک بصورت Persist شده نیز ذخیره کرد. در SQL Server دو جدول پیش فرض به نام های Inserted و Deleted وجود دارد تا عملیات DML را مدیریت و در Memory بصورت موقتی ذخیره نمایند. زمانی که از دستور Insert یا Delete استفاده شود به ترتیب در جداولInserted و Deleted رکوردهای درج شده و حذف شده قرار می گردند. حال این سوال پیش می آید که هنگام Update جداول این دو جدول چگونه عمل می کنند؟ هنگامی که از دستور Update استفاده شود در واقع SQL Server دو عمل را به ترتیب انجام می دهد. حذف رکورد یا رکورد هایی که عملیات update برای روی آن ها انجام می شود. درج رکوردها با مقادیر جدید در جدول اصلی. بنابراین عملیات Update نیز از دو عمل درج و حذف تشکیل شده است که با استفاده از دو جدول ذکر شده مدیریت می شود. همین کار برای سایر دستورات مانند update و Insert نیز می¬توان انجام داد. دستور زیر را در نظر بگیرید: declare @TblProduct_Temp as Table ( [Name] [nvarchar](50) , [RegCity] [nvarchar](10) , [Color] [nvarchar](10), [Count] [int], [ModifiedDate] [datetime] ); update [TBLProduct] set RegCity=N'خراسان' , count=17 output inserted.[Name],deleted.[RegCity],inserted.[Color],deleted.[Count],inserted.[ModifiedDate] into @TblProduct_Temp where [Name] in (N'قطعه ۴'); select * from @TblProduct_Temp; خروجی آن به شکل زیر خواهد بود:همانطور که مشاهده میشود مقدار دو فیلد “شهر” و “تعداد” قبل از آپدیت، در Output نمایش داده شده است که میتواند برای ردیابی عملیات از آن استفاده نمود یا بتوان در موارد حساس مقادیر گذشته را نگهداری کرد چه رتبه ای میدهید؟ میانگین ۰ / ۵. از مجموع ۰ اولین نفر باش برچسب ها # Output Clause# sql# SQL Server# SQL Server 2019# آشنایی با Output Clause# آشنایی با Output Clause در sql server دانلود مقاله آشنایی با Output Clause فرمت PDF 3 صفحه حجم 1 مگابایت دانلود مقاله معرفی نویسنده مقالات 6 مقاله توسط این نویسنده محصولات 5 دوره توسط این نویسنده ایمان باقری ایمان باقری بیش از 10 سال است که بصورت حرفهای با SQL Server کار میکند. و مدرس دورههای SQL Server در نیک آموز میباشد. مشاور و متخصص در هوش تجاری و SQL Server توسعه دهنده داشبورد های مدیریتی شرکت سام سرویس (سامسونگ) طراحی و توسعه سیستم انبار داده حوزه بانکی طراحی و پیاده سازی سیستم های تحلیلی و گزارشی پروفایل نویسنده معرفی محصول ایمان باقری دوره آموزشی کوئری نویسی در SQL Server 1.790.000 تومان مقالات مرتبط ۱۰ اردیبهشت SQL Server استفاده از Credential و Proxy در SQL Server Agent حسن سلیمانی ۰۷ اردیبهشت SQL Server استفاده از Operator ها در SQL Server Agent حسن سلیمانی ۰۵ اردیبهشت SQL Server بررسی نحوه ایجاد Job در SQL Server حسن سلیمانی ۲۹ فروردین SQL Server آشنایی با بخش های مختلف SQL Server Agent حسن سلیمانی دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ