Я - разработчик PHP с опытом работы с MySQL и впервые работаю с Oracle.Я пытаюсь вставить данные из двух таблиц в третью, с функциональной целью отслеживания разрешений пользователей на доступ к определенным продуктам на моей платформе, избегая при этом ошибок УНИКАЛЬНОГО ОГРАНИЧЕНИЯ (например, добавление дублирующихся записей).У меня есть три таблицы:
USERS
PERMISSIONS
USER_PERMISSIONS
И что я хочу сделать, это добавить строку, содержащую идентификатор от ПОЛЬЗОВАТЕЛЕЙ, идентификатор от РАЗРЕШЕНИЯ и идентификатор текущего пользователя (чтобы мы знали, кто добавил запись).Вот моя попытка:
MERGE INTO USER_PERMISSIONS up
USING (
SELECT
USERS.ID,
PERMISSIONS.ID
FROM
USERS,
PERMISSIONS
WHERE
PERMISSIONS.NAME = 'productalpha'
AND
USERS.SHORTNAME = 'username'
) ON (
USERS.ID = up.USER_ID
AND
PERMISSIONS.ID = up.PERMISSION_ID
) WHEN NOT MATCHED THEN
INSERT (
USER_ID,
PERMISSION_ID,
LAST_UPDATED_BY_USER_ID
) VALUES (
USERS.ID,
PERMISSIONS.ID,
'1'
);
Однако у меня возникают проблемы с ошибками INVALID IDENTIFIER.Мне известно, что часть запроса USING (SELECT) сообщает запросу, какие таблицы я буду использовать, но я не уверен, как правильно их идентифицировать, чтобы запрос работал.Это неправильный подход?Любой совет будет принят во внимание.Большое спасибо!
РЕДАКТИРОВАТЬ: точное сообщение об ошибке я получаю:
Error at Command Line : 16 Column : 9
Error report -
SQL Error: ORA-00904: "PERMISSIONS"."ID": invalid identifier
00904. 00000 - "%s: invalid identifier"