ورود

View Full Version : کدام فیلد آپدیت شده؟



DataMaster
یک شنبه 25 فروردین 1387, 16:07 عصر
سلام و خسته نباشید به دوستان
من توی یک تریگر میخوام بدونم کدوم فیلد آپدیت شده ؟ این اطلاعات در کجا ثبت و نگهداری میشه؟

ممنون

حمیدرضاصادقیان
یک شنبه 25 فروردین 1387, 20:05 عصر
سلام.وقتی شما یک تریگر مینویسید ، خودش دوتا جدول مجازی به نام deleted,inserted داره که وقتی روی جدولی شما تغییراتی انجام بدید مانند اضافه و اصلاح در جدول inserted و اگر عملیات حذف انجام بدید در جدول Deleted نمایش داده میشه. از اونجا شما میتوانید متوحه عملیات بشید.

AminSobati
یک شنبه 25 فروردین 1387, 22:44 عصر
برای حالتهای ساده از تابع UPDATE استفاده کنید. برای حالتهای پیچیده تر از COLUMNS_UPDATED.
مثلا داخل Trigger مینویسید:
IF UPDATE(MyColumn) Print .....

DataMaster
دوشنبه 26 فروردین 1387, 14:34 عصر
برای حالتهای ساده از تابع UPDATE استفاده کنید. برای حالتهای پیچیده تر از COLUMNS_UPDATED.
مثلا داخل Trigger مینویسید:
IF UPDATE(MyColumn) Print .....
راستش من می خوام یک تاریخچه از تغییرات رکوردها داشته باشم ، اما نیازم این هست که بدونم کدوم فیلد آپدیت شده و اون رو به صورت یک شرح ثبت کنم ، این کد بالا باید اسم فیلد رو مشخص کنم ،نمیشه برای هر جدولی ازش استفاده کرد

AminSobati
دوشنبه 26 فروردین 1387, 19:12 عصر
COLUMNS_UPDATED رو دیدین؟

DataMaster
چهارشنبه 28 فروردین 1387, 15:11 عصر
COLUMNS_UPDATED رو دیدین؟
آقای ثباتی COLUMNS_UPDATED ، به صورت بیتی ایندکس فیلدهایی که تغییر کرده اند را بر میگیرداند، حالا من چطوری میتونم به اسم فیلد و اطلاعاتی دیگر مثل Description دسترسی داشته باشم؟

AminSobati
چهارشنبه 28 فروردین 1387, 23:19 عصر
شما میدونین که هر bit متناظر با کدوم فیلد شماست. شاید select * from sys.columns بتونه کمکتون کنه.