Oracle SQL 插入触发器处理重复联系人并更新所有者字段

问题描述 投票:0回答:1

我有一个名为

CONTACTS
的 Oracle SQL 表,其中包含列
ID
NAME
PHONE
OWNER
ID
是主键,
Phone
(Name, Phone)
是唯一的。

我对此表有一个插入查询:

BEGIN
    INSERT INTO CONTACTS (NAME, PHONE, OWNER)
    VALUES (:P170_NAME, :P170_PHONE, :APP_USER);
END;

在前端,我尝试为以下情况创建触发器:

  1. 当有人尝试用新手机创建新联系人时,可以创建,一切都很好
  2. 当有人尝试创建一个已由其他用户创建的新联系人(由于
    (name, phone)
    而该联系人也是唯一的)时,请更新该电话号码的所有者列并存储两个所有者,并用逗号分隔,以下是一个示例:

如果

('Mustafa Turhan', '905554443322', 'M.TURHAN')
已经创建 如果有人尝试创建
('Mustafa Turhan', '905554443322', 'K.AKKUS')
,它应该这样做:
('1','Mustafa Turhan', '905554443322', 'M.TURHAN,K.AKKUS')

  1. 当有人尝试创建
    ('Alihan Turhan', '905554443322', 'K.CEKIC')
    时,它应该抛出错误,因为“电话”是唯一的。
sql oracle
1个回答
0
投票

触发器不是实现这些要求的方法。从您的问题来看,您似乎正在使用 Oracle APEX。以下是 APEX 中通常的做法:

创建电话号码唯一性验证(要求 3)。

要求 2:创建一个 pl/sql 块来检查电话号码是否唯一,而不是简单的插入。如果唯一,则插入行,如果不唯一,则更新现有行。

© www.soinside.com 2019 - 2024. All rights reserved.