Кто-нибудь знает, как я могу обновлять данные в таблице после операций вставки, удаления и обновления? У меня есть простая таблица:После удаления или обновления или обновления таблицы обновления
create table EV_JOURNAL (EVENT_TO_TASK_ID NUMBER(3)
NOT NULL Check(EVENT_TO_TASK_ID>0), EVENT_TIME TIMESTAMP WITH TIME ZONE NOT NULL);
// таблица, созданная я нашел некоторую информацию о триггерах и написал после вставки, удаления и запуска обновления:
create or replace
TRIGGER AFT_INS_UPD_DEL_TRIG
AFTER Insert or Delete or Update ON EV_JOURNAL
For Each Row
DECLARE
BEGIN
INSERT INTO EV_JOURNAL(EVENT_TO_TASK_ID,EVENT_TIME)
VALUES(:NEW.EVENT_TO_TASK_ID, :NEW.EVENT_TIME);
END AFT_INS_UPD_DEL_TRIG;
Но когда я пытаюсь вставить данные в таблицу, что-то вроде этого:
Insert into ev_journal (event_time,event_to_task_id) values(systimestamp,2);
у меня есть следующие ошибки: SQL Error: ORA-04091: таблица EV_JOURNAL мутирует, триггер/функция может не видеть его; ORA-04088: ошибка во время запуска триггера; Может ли кто-нибудь помочь мне в этой ситуации? Мне нужно только обновить таблицу, и все, но я не могу понять, как это сделать.
код из моего C# приложения, где мне нужно использовать обновленные данные из данной таблицы:
public static List<EventTrigger> FillEventTriggerList (List<EventTrigger> list)
{
using (OracleConnection connection = new OracleConnection (connectionString))
{
connection.Open();
string sqlText = "Select * From EV_JOURNAL";
OracleCommand command = new OracleCommand (sqlText, connection);
OracleDataReader reader = command.ExecuteReader();
while (reader.Read())
{
list.Add (new EventTrigger (int.Parse(reader [ "EVENT_TO_TASK_ID" ].ToString()),(DateTime)(reader [ "EVENT_TIME" ])));
}
}
return list;
}
Так что, когда я, скажем, удалить некоторые строки из EV_JOURNAL, после этого запроса, которую я получаю старые данные, которые должны быть уже удаленным, но это становится так, только после того, как я нажму обновить таблицу в базе данных.
Благодаря
При обновлении таблицы я имею в виду только то же действие, что и щелчок обновления в базе данных. Мне нужно получить данные из таблицы из моего приложения C#. Но когда я влияю на таблицу, вставляя, обновляя, удаляя что-то в моем запросе выбора, у меня есть старые результаты из таблицы. Я добавлю код к моему вопросу сейчас. – Dima
Возможно, вы не совершили свои изменения. Но более глубокая проблема заключается в том, что вы не понимаете, что, когда вы выполнили вставку, обновление или удаление в таблице базы данных, произошло изменение данных. Вам не нужно ничего делать, кроме как совершить фиксацию (если это не сделано автоматически), чтобы другие сеансы могли видеть это изменение. –