با استفاده از SIGNAL (در MySQL) یا RAISERROR (در SQL Server) یک trigger بنویسید که هنگام درج رکوردی با مقدار منفی در ستون amount، درج را متوقف کرده و یک پیام خطای سفارشی صادر کند و هم‌زمان اطلاعات خطا (مثل id، مقدار، زمان و پیام) را در جدول log_errors ذخیره نماید.

5.0 بازدید آخرین ویرایش در 209 روز قبل ساعت 09:10

0.0

برای حل این مسئله یک جدول نمونه (مثلاً transactions) و یک جدول log_errors برای نگهداری لاگ خطا بسازید، سپس یک trigger از نوع BEFORE INSERT (در MySQL) یا INSTEAD OF/AFTER INSERT با منطق مناسب در SQL Server ایجاد کنید که اگر NEW.amount

توسط پژوهشگر در 209 روز قبل ساعت 09:10
دسته بندی ها: SQL SQL for beginner
arash در 208 روز قبل ساعت 21:22

برای جلوگیری از درج مقدار منفی در ستون amount، از یک BEFORE INSERT در MySQL یا INSTEAD OF/AFTER INSERT در SQL Server استفاده کنید تا قبل یا همزمان با درج، لاگ خطا ثبت و عملیات متوقف شود. مطمئن شوید جدول log_errors شامل ستون‌های لازم مانند id، amount، time و پیام است و trigger مقدار مربوطه را از NEW.amount (MySQL) یا INSERTED.amount (SQL Server) ثبت می‌کند. در MySQL از SIGNAL SQLSTATE '45000' استفاده کنید تا پیام کاربری صادر شود و با ثبت لاگ، اجرای INSERT خاتمه یابد. در SQL Server از RAISERROR با سطح severity مناسب (مثلاً 16) استفاده کنید و در صورت نیاز TRANSACTION را ROLLBACK کرده یا از خروج از trigger استفاده کنید تا هم لاگ و هم پیام خطا منطبق باشند.

گزارش

3 پاسخ

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

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