یک کوئری بنویسید که با استفاده از تابع SESSION_USER() نام کاربری جلسه جاری را هنگام درج یک ردیف جدید در جدول activity_log ثبت کند.

12.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:52

0.0

برای حل این مسئله می‌توانید ابتدا جدول activity_log را ایجاد کنید (ستون‌هایی مانند id خودافزا، action، created_at و user). سپس از دستور INSERT ... VALUES و تابع SESSION_USER() برای مقداردهی ستون user استفاده کنید، مثلاً INSERT INTO activity_log (action, user) VALUES ('created record', SESSION_USER()); برای ثبت خودکار می‌توانید یک تریگر AFTER INSERT روی جدول هدف بسازید که هنگام درج یک ردیف جدید، یک رکورد لاگ با SESSION_USER() اضافه کند. نکته: SESSION_USER() نام حساب متصل شده را برمی‌گرداند که در مباحث مدیریت دیتابیس برای ردگیری فعالیت کاربران کاربردی است؛ در صورت نیاز تفاوت آن با CURRENT_USER() را بررسی کنید.

توسط پژوهشگر در 201 روز قبل ساعت 03:52
دسته بندی ها: MySQL MySQL for beginner
nima در 201 روز قبل ساعت 04:51

برای ثبت نام کاربری جلسه جاری می‌توانید از SESSION_USER() استفاده کنید؛ اما این مقدار ممکن است شامل میزبان نیز باشد، پس اگر تنها نام کاربری لازم است، از ترکیبی مانند SUBSTRING_INDEX(SESSION_USER(), '@', 1) استفاده کنید. ساخت یک AFTER INSERT TRIGGER روی جدول هدف برای ثبت رکورد لاگ به‌طور خودکار مفید است، اما به کارایی و نگهداری توجه کنید. همچنین به تفاوت CURRENT_USER() و SESSION_USER() توجه کنید؛ در برخی محیط‌ها CURRENT_USER() ممکن است به کارگیری کاربر احراز شده توسط پرکسی مربوط باشد. در نهایت مطمئن شوید فیلد created_at با NOW() یا UTC_TIMESTAMP() مقداردهی شود تا زمان لاگ دقیق باشد.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری