我有一个名为
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;
在前端,我尝试为以下情况创建触发器:
(name, phone)
而该联系人也是唯一的)时,请更新该电话号码的所有者列并存储两个所有者,并用逗号分隔,以下是一个示例:如果
('Mustafa Turhan', '905554443322', 'M.TURHAN')
已经创建
如果有人尝试创建 ('Mustafa Turhan', '905554443322', 'K.AKKUS')
,它应该这样做:('1','Mustafa Turhan', '905554443322', 'M.TURHAN,K.AKKUS')
('Alihan Turhan', '905554443322', 'K.CEKIC')
时,它应该抛出错误,因为“电话”是唯一的。触发器不是实现这些要求的方法。从您的问题来看,您似乎正在使用 Oracle APEX。以下是 APEX 中通常的做法:
创建电话号码唯一性验证(要求 3)。
要求 2:创建一个 pl/sql 块来检查电话号码是否唯一,而不是简单的插入。如果唯一,则插入行,如果不唯一,则更新现有行。