一、WITH CHECK OPTION
INSERT INTO
(SELECT EMPLOYEE_ID, LAST_NAME, EMAIL, HIRE_DATE, JOB_ID, SALARY
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 50 WITH CHECK OPTION)
VALUES
(123,
'Ryan',
'[email protected]',
TO_DATE('2011-09-10', 'yyyy-mm-dd'),
'10',
5000);
二、WHEN THEN
INSERT
WHEN MOD(OBJECT_ID, 2) = 1 THEN
INTO T1(X, Y) VALUES(RN, OBJECT_ID)
WHEN MOD(OBJECT_ID, 2) = 0 THEN
INTO T2(X, Y) VALUES(RN, CREATED)
SELECT ROWNUM RN, OBJECT_ID, CREATED FROM ALL_OBJECTS
三、INSERT ALL
每個表都插入
- 無條件
INSERT ALL
INTO sal_history VALUES(empid, hiredate, sal)
INTO mgr_history VALUES(empid, mgr, sal)
SELECT employee_id empid, hire_date hiredate, salary sal, manager_id mgr
FROM employees
WHERE employee_id>200
- 有條件
INSERT ALL
WHEN sal>10000 THEN INTO sal_history VALUES (empid, hiredate, sal)
WHEN mgr>200 THEN INTO mgr_history VALUES (empid, mgr, sal)
SELECT employee_id empid, hire_date hiredate, salary sal, manager_id mgr
FROM employees
WHERE employee_id>200
三、INSERT FIRST
只插入首個滿足條件的表
INSERT FIRST
WHEN sal>25000 THEN INTO special_sal VALUES (deptid, sal)
WHEN hiredate LIKE ('%00%') THEN INTO hiredate_history_00 VALUES (deptid, hiredate)
WHEN hiredate LIKE ('%99%') THEN INTO hiredate_history_99 VALUES (deptid, hiredate)
ELSE INTO hiredate_history VALUES (deptid, hiredate)
SELECT department_id deptid, SUM(salary) sal, MAX(hire_date) hiredate
FROM employees
GROUP BY department_id
四、MERGE
MERGE INTO table_name table_alias
USING (table|view|sub_query) alias
ON (join condition)
WHEN MATCHED THEN
UPDATE
SET col1 = col_val1,
col2 = col_val2
WHEN NOT MACHED THEN
INSERT (column_list)
VALUES (column_values);