Так что я пытаюсь создать триггер, который изменяет с записями метку времени, у меня это до сих порOracle SQL Trigger ошибка: ORA-00933
create or replace TRIGGER job_date_set
AFTER INSERT OR UPDATE OF start_date, closing_date ON jobs
FOR EACH ROW
BEGIN
IF UPDATING THEN
CASE
WHEN :OLD.closing_date != :NEW.closing_date THEN
UPDATE jobs
SET closing_date = to_date(to_date(:NEW.closing_date,'DD/MON/YYYY')||' 23:59:59','DD/MON/YYYY HH24:MI:SS')
WHERE :OLD.job_id = job_id;
WHEN :OLD.start_date != :NEW.start_date THEN
UPDATE jobs
SET start_date = to_date(to_date(:NEW.start_date,'DD/MON/YYYY') ||' 00:00:00','DD/MON/YYYY HH24:MI:SS')
WHERE :OLD.job_id = job_id;
END CASE;
END IF;
IF INSERTING THEN
UPDATE jobs
SET closing_date = to_date(to_date(:NEW.closing_date,'DD/MON/YYYY') ||' 23:59:59','DD/MON/YYYY HH24:MI:SS')
SET start_date = to_date(to_date(:NEW.start_date,'DD/MON/YYYY')||' 00:00:00','DD/MON/YYYY HH24:MI:SS')
WHERE :OLD.job_id = job_id;
END IF;
END;
Вот описание ошибок: компиляции не удалось, строка 17 (16:54:27) Номера строк, связанные с ошибками компиляции, относятся к первому оператору BEGIN. Это влияет только на компиляцию триггеров базы данных. PL/SQL: ORA-00933: команда SQL не выполнена должным образом. Ошибка компиляции, строка 15 (16:54:27) Номера строк, связанные с ошибками компиляции, относятся к первому оператору BEGIN. Это влияет только на компиляцию триггеров базы данных. PL/SQL: SQL заявление игнорировали
По звукам его, он не думает, что я, если заявление было должным образом закрыто, но я понятия не имею, где я пошло не так
Похоже, что jobs.closing_date и jobs.start_date являются столбцами 'date'. Если это так, ваш 'to_date (to_date (' должен быть 'to_date (to_char (' - вы хотите преобразовать дату в строку символов в формате DD/MON/YYYY, чтобы добавить '23: 59: 59'' в он и преобразует его обратно в дату. (Может быть проще «trunc» его, добавить 1 и вычесть «интервал» 1 «второй».) –