Я пытаюсь запретить пользователям обновлять одну таблицу на основе значения даты из другой таблицы.Попытка создать триггер, который предотвращает обновления на основе значения из другой таблицы
Таблица A содержит строки, которые я хотел бы сделать недоступными для редактирования, если значение даты в таблице B старше, чем sysdate.
мне нужно как-то сказать на курок, чтобы проверить строку и использовать внешний ключ в строке Таблица А для запроса его соответствующие строки в таблице B, а затем сделать это:
raise_application_error (-20000, «Это слишком поздно, чтобы изменить эту запись ');
Спасибо
Благодарим вас за ответ! я получаю эти ошибки, когда я проверить триггер ORA-01422: точная выборка возвращает больше, чем запрошенное количество строк ORA-06512: на "[DBO] .TRG_CHECK_DATE", строка 4 ORA-04088: ошибка во время выполнения из триггера [dbo] .TRG_CHECK_DATE ' Мне также нужно взять: new от: new.b_key, поскольку он говорит мне, что я использую неверную переменную связывания – user2241161
@ user2241161 - Как я уже сказал, я предполагаю, что кардинальность. Если 'B' является родителем в отношении внешнего ключа, то новая строка в' A' должна указывать ровно на 1 строку в 'B'. Полученная ошибка указывает на то, что запрос возвращает более одной строки. Это означает, что вы не перевели его в свою модель данных правильно или что ваша модель данных фактически не имеет надлежащего отношения с внешним ключом, и в 'B' есть несколько родительских строк, которые относятся к новой строке в' A'. ': new.b_key' относится к столбцу' b_key' в новой строке, которую вы вставляете в таблицу 'A'. –
@ user2241161 - Если вы получаете ошибку «плохой переменной привязки», это, вероятно, означает, что вы указали имя столбца в 'A', которое неправильно ссылается на' B'. Я предполагал, что столбец будет назван одинаковым как в «A», так и «B». Возможно, что ваша модель данных не соответствует этому. –