🥭Identity Column on Oracle
Restriction
สามารถกำหนด Identity Column ได้ One Column ต่อ Table
จะต้องกำหนด Data Type ของ Identity Column เป็น Numeric เสมอ
ไม่สามารถแก้ไข Identity Column ด้วยการ Alter ได้
การสร้าง CREATE TABLE จากการ AS SELECT จะไม่สามารถ Inherit ข้อมูลจาก Identity Column ได้ ให้ทำการ CREATE TABLE ก่อน แล้วใช้ INSERT INTO แทน
Get Started
ทำการ Create Table ด้วย Generate Always
CREATE TABLE ADMIN (
ADMIN_ID NUMBER GENERATED ALWAYS AS IDENTITY,
ADMIN_NAME VARCHAR2(20) NOT NULL
);
ลองทำการ Insert Data คำเตือนจะไม่สามารถ Assign ค่าใน ADMIN_ID ได้ เนื่องจากจะถูก Generate โดยอัตโนมัติทุกครั้ง รวมถึงค่า NULL ก็ไม่สามารถ Assign ได้
INSERT INTO ADMIN (ADMIN_NAME)
VALUES ('Administrator');
ทำการ Create Table ด้วย Generate by Default
CREATE TABLE ADMIN (
ADMIN_ID NUMBER GENERATED BY DEFAULT AS IDENTITY,
ADMIN_NAME VARCHAR2(20) NOT NULL
);
ลองทำการ Insert Data อีกครั้งหนึ่ง คำเตือนจะสามารถ Assign ค่าใน ADMIN_ID ได้ กรณีที่ไม่ได้กำหนดก็จะถูก Generate โดยอัตโนมัติ แต่ไม่สามารถ Assign ค่า NULL ได้
INSERT INTO ADMIN (ADMIN_ID, ADMIN_NAME)
VALUES (2, 'DBA');
ทำการ Create Table ด้วย Generate by Default on NULL
CREATE TABLE ADMIN (
ADMIN_ID NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
ADMIN_NAME VARCHAR2(20) NOT NULL
);
ลองทำการ Insert Data อีกครั้งหนึ่ง คำเตือนจะสามารถ Assign ค่าใน ADMIN_ID ได้ กรณีที่ไม่ได้กำหนดก็จะถูก Generate โดยอัตโนมัติ แต่สามารถ Assign ค่า NULL ได้
INSERT INTO ADMIN (ADMIN_ID, ADMIN_NAME)
VALUES (NULL, 'Administrator');
อ่านเพิ่มเติม : https://bit.ly/2PIIwsT, https://bit.ly/2wSvUZx, https://bit.ly/381HKgS
Last updated
Was this helpful?