每次在表格中输入一行数据时,我都会尝试加载一个具有唯一序列号的列。如何实现?
答案 0 :(得分:0)
您可以创建Sequence,然后在插入语句中使用序列nextval,以获得要具有连续递增值的列。
CREATE SEQUENCE seq
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
CACHE 10;
的 INSERT INTO tab VALUES (seq.nextval, col1, col2, col3);
强> 的
答案 1 :(得分:0)
Oracle中没有类似“auto_increment”或“identity”的内容,
但如果您希望在列值中自动增加,则可以使用Sequence
来实现此目的。
创建序列后,您可以使用After Insert Trigger
插入相同的值。
这是触发器示例...
CREATE OR REPLACE TRIGGER dep_ins_trig
BEFORE INSERT ON <table_name>
FOR EACH ROW
BEGIN
SELECT dept_seq.NEXTVAL
INTO :new.id
FROM dual;
END;
/
当您需要任何人都可以轻松阅读/记住/理解的序列号时,Trigger
和Sequence
即可实现此目的。但是如果你不想通过这种方式管理ID列(比如emp_id),并且这个列的值不是很大,你可以在Table Creation中使用SYS_GUID()
来获得这样的自动增量。
CREATE TABLE <table_name>
(emp_id RAW(16) DEFAULT SYS_GUID() PRIMARY KEY,
name VARCHAR2(30));
现在,您的emp_id
列将接受“全球唯一标识符值”。
您可以通过忽略emp_id列来在表中插入值。
INSERT INTO <table_name> (name) VALUES ('name value');
因此,它会为您的emp_id
列插入唯一值。