View Full Version : بدست اوردن رکوردی که باعث اجرای تریگر شده
M.YasPro
چهارشنبه 27 مرداد 1389, 12:17 عصر
سلام
میشه به رکوردی که باعث اجرای تریگر شده دسترسی داشت ؟
راهی به جز select اخرین رکورد.
ممنون از توجهتون
محمد سلیم آبادی
چهارشنبه 27 مرداد 1389, 13:34 عصر
سلام،
نکته 1: اگر تریگر بعد از Insert تعریف شده باشد بعد از هر عمل insert این تریگر فایر میشود. و فرقی نمی کند در دستور insert یک سطر درج شده باشد یا N سطر. به این معنا که به ازای هر عبارت insert تریگر فایر نمی شود نه به ازای درج هر سطر. به این نکته توجه داشته باشید.
برای انتخاب سطر درج شده کافیه از ماده ی OUTPUT (اگر 2005 به بالا کار می کنید) استفاده کنید. چیزی شبیه به این:
INSERT INTO table_name(column_1,...)
OUTPUT inserted.column_1 ,...
VALUES (@param1,...);
M.YasPro
چهارشنبه 27 مرداد 1389, 16:11 عصر
ممنون از جوابتون
میشه یه مثال عملی بزنید ؟
من میخوام توی تریگرم بعد از درج یک رکورد ، یه رکورد دیگه با همه مقادیر رکورد درج شده منتها با یک تفاوت رکورد بعدی رو درج کنم .
ممنون از توجهتون
محمد سلیم آبادی
چهارشنبه 27 مرداد 1389, 23:13 عصر
یک تریگر از نوع After Insert ایجاد کنید. سپس با کمک داده های موجود در جدول مجازی، در جدول هدف سطر مورد نظر را درج کنید. چیزی شبیه به این:
INSERT INTO table_name SELECT * FROM inserted
M.YasPro
پنج شنبه 28 مرداد 1389, 10:09 صبح
من می خوام به تک تک فیلدهاش دسترسی داشته باشم دوست عزیز نه کل رکورد .
محمد سلیم آبادی
پنج شنبه 28 مرداد 1389, 11:09 صبح
خب بجای * لیست ستون ها مورد نظر را لیست کنید. مثلا
select col1, col2 from inserted
منظورتون این بود؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.