在表Employees上創建觸發器,它應該:
觸發資料插入命令格式化phone欄位,將其轉換為模式(YYY)XXX-XX-XX。您輸入的數字必須是10位數字。觸發器應該檢查這一點。如果號碼少于或多于 10 位,則禁止資料插入并發出錯誤訊息。
表:
CREATE TABLE dept
(
dept_id number(3) not null,
dept_name varchar2(50) not null,
emp_cnt number(3) not null,
constraint dept_pk primary key (dept_id)
);
/
CREATE TABLE employees
(
emp_id number(3) not null,
dept_id number(3) not null,
emp_name varchar2(50) not null,
address varchar2(100),
phone varchar2(20) not null,
salary number(8,2) not null,
constraint emp_pk primary key (emp_id),
constraint dept_fk foreign key (dept_id) references dept(dept_id)
);
/
請幫我
uj5u.com熱心網友回復:
使用 CHECK 約束不會解決您的問題,因為您必須屏蔽您的電話,最終將有超過 10 位數字。因此,您必須在 TRIGGER 中添加檢查條件。要以所需格式屏蔽電話號碼,您可以使用以下觸發器 -
CREATE OR REPLACE TRIGGER trig_mask_phone
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
IF LENGTH(:new.phone) <> 10 THEN
RAISE_APPLICATION_ERROR(-20001, 'Phone No is incorrect');
END IF;
:new.phone := '(' || SUBSTR(:new.phone, 1, 3) || ')' || SUBSTR(:new.phone, 4, 3) || '-' || SUBSTR(:new.phone, 7, 2) || '-' || SUBSTR(:new.phone, 9, 2);
END;
/
演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/461886.html
上一篇:Oracle查詢邏輯宣告和使用
