PDA

View Full Version : سوال: خطا در هنگام اجرای تریگر



sohail0098
سه شنبه 29 بهمن 1392, 19:45 عصر
سلام به بروبکس
من تازه اوراکل رو شروع کردم
برای خودم یه کدی نوشتم که هز این به بعد هرچی به جدول بوکم اضافه کنم با اجرای این تریگر به صورت خودکار نامش به changed تغیر کنه
تو کامپایل کد مشکلی نیست ولی تو اجراش بعد از دستور اینسرت تو خط 2 و 5 خطا میگیره
اگه میشه راهنماییم کنید که مشکل چیه؟

CREATE OR REPLACE TRIGGER CHANGEBOOKNAME
AFTER
INSERT
ON "SYSTEM".BOOKS
BEGIN
UPDATE SYSTEM.BOOKS
SET SYSTEM.BOOKS.BOOKENAME = 'CHANGED'
WHERE SYSTEM.BOOKS.ID = MAX(SYSTEM.BOOKS.ID);
RETURN;
END;

رسول_57
سه شنبه 29 بهمن 1392, 20:38 عصر
با سلام

خطایی که می دهد را ذکر نمایید ؟

sohail0098
سه شنبه 29 بهمن 1392, 22:42 عصر
با سلام

خطایی که می دهد را ذکر نمایید ؟
سلام
خیلی ممنون از کمکتون
116846

aidin300
چهارشنبه 30 بهمن 1392, 03:58 صبح
نمی تونی از این روش استفاده کنی ممکن هست خطای mutating بده باز مطمئن نیستم ولی می تونی از :new.id استفاده کنی تا id آخرین رکوردی که Insert شده رو پیدا کنی کلون هم سمت چپ new قرار می گیره

sohail0098
چهارشنبه 30 بهمن 1392, 12:51 عصر
نمی تونی از این روش استفاده کنی ممکن هست خطای mutating بده باز مطمئن نیستم ولی می تونی از :new.id استفاده کنی تا id آخرین رکوردی که Insert شده رو پیدا کنی کلون هم سمت چپ new قرار می گیره
سلام داداشی
از راهنماییت ممنونم
من اصلا خط where رو هم کامنت کردم تا تغییر روی کل جدول اعمال بشه
بازم خطا داد
مشکلش نمیدونم از کجاست:ناراحت:

ghasemi414
چهارشنبه 30 بهمن 1392, 15:45 عصر
از Group Function در where استفاده نمی شود.

اگر باز هم بدون Where Clause خطا میده ، پیغام رو بزارید تا ببینیم.

sohail0098
چهارشنبه 30 بهمن 1392, 16:05 عصر
از Group Function در where استفاده نمی شود.

اگر باز هم بدون Where Clause خطا میده ، پیغام رو بزارید تا ببینیم.

جالبیش اینجاست
من الان یه تریگر ویزارد ایجاد کردم و اتوماتیک توی تریگرهای مربوط به تیبلها ذخیره شد
ولی این تریگری که خودم کد زدم توی سطح دیتا بیس ذخیره شده
چرا؟:متعجب:

sohail0098
چهارشنبه 30 بهمن 1392, 16:15 عصر
دستتون درد نکنه
مشکل همون تابع MaX بود به علاوه اینکه بعد کامنت کردن بذای خط قبلیش سیمی ک.لون نمی زاشتم
حالا برای اینکه آخرین مقداری که اضافه میشه فقط تغییر کنه باید از GROUP BY استفاده کنم؟

aidin300
پنج شنبه 01 اسفند 1392, 03:46 صبح
از : new استفاده كن