forked from hanaboy/SQL
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathIDENTITY Column INSERT with OVERRIDING VALUE.sql
45 lines (37 loc) · 1.67 KB
/
IDENTITY Column INSERT with OVERRIDING VALUE.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
-- this syntax is used for testing the INSERT with OVERRIDING {SYSTEM|USER} VALUE feature for an IDENTITY column in SAP HANA
CREATE COLUMN TABLE BOARDMEMBERS
(
BMID INTEGER,
BM VARCHAR(20),
ROLE VARCHAR(20),
SALARY INTEGER
);
INSERT INTO BOARDMEMBERS VALUES (1, 'Bob', 'CEO', 1500000);
INSERT INTO BOARDMEMBERS VALUES (2, 'Denys', 'CTO', 1000000);
CREATE COLUMN TABLE EMPLOYEES
(
EMPID INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY (start with 100),
EMP VARCHAR(20),
ROLE VARCHAR(20),
SALARY INTEGER
);
INSERT INTO EMPLOYEES VALUES('Christiano','Manager',500000);
INSERT INTO EMPLOYEES VALUES('Eric','Manager',350000);
INSERT INTO EMPLOYEES VALUES('Ryan','Director',450000);
INSERT INTO EMPLOYEES VALUES('Bryan','Director',150000);
INSERT INTO EMPLOYEES VALUES('Doreen','Manager',500000);
INSERT INTO EMPLOYEES VALUES('Gabriel','Manager',350000);
INSERT INTO EMPLOYEES VALUES('Angel','Director',450000);
INSERT INTO EMPLOYEES VALUES('Robin','Director',150000);
INSERT INTO EMPLOYEES VALUES('Sarah','Manager',500000);
INSERT INTO EMPLOYEES VALUES('Peter','Manager',350000);
SELECT * FROM EMPLOYEES;
-- the following will return an error due to too many values
INSERT INTO EMPLOYEES (SELECT * FROM BOARDMEMBERS WHERE BMID = 2);
-- this is one way to insert values from another table into a table with an identity
INSERT INTO EMPLOYEES (SELECT BM, ROLE, SALARY FROM BOARDMEMBERS WHERE BMID = 2);
-- this is another way assuming that both tables share the same definition
INSERT INTO EMPLOYEES OVERRIDING USER VALUE (SELECT * FROM BOARDMEMBERS WHERE BMID = 2);
SELECT * FROM EMPLOYEES;
INSERT INTO EMPLOYEES OVERRIDING SYSTEM VALUE (SELECT * FROM BOARDMEMBERS WHERE BMID = 1);
SELECT * FROM EMPLOYEES;