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