【发布时间】:2018-11-20 17:41:27
【问题描述】:
我是一名具有 MySQL 背景的 PHP 开发人员,第一次与 Oracle 合作。我正在尝试将两个表中的数据插入到第三个表中,其功能目标是跟踪用户访问我平台上某些产品的权限,同时避免 UNIQUE CONSTRAINT 错误(即添加重复记录)。我有三张桌子:
USERS
PERMISSIONS
USER_PERMISSIONS
我想做的是添加一行,其中包含来自 USERS 的 ID、来自 PERMISSIONS 的 ID 和当前用户的 ID(这样我们就知道是谁添加了记录)。这是我的尝试:
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"
【问题讨论】:
-
请发布完整的错误消息详细信息,并在此行发生
标签: oracle merge duplicates