我们有一个工具,这个工具创建了一些插入脚本来在我们的plsql表中添加行。 这个脚本不可修改,我们看不到这个脚本。所以,
当数据行到来时(我们不知道结构的插入脚本),我们应该给出一个主键。我们可以使用触发器,但出于性能原因我们不希望这样做。
下面的代码不起作用。
CREATE TABLE qname
(
qname_id integer NOT NULL default qname_id_seq.nextval PRIMARY KEY,
);
有什么想法吗? 感谢..
答案 0 :(得分:2)
.nextval不能在表的默认值中使用,当您想要任何人都可以轻松阅读/记住/理解的序列号时,这可以通过Trigger
和Sequence
来实现。但是如果你不想通过这种方式管理ID列(比如qname_id),并且这个列的值不是很大,你可以在Table Creation中使用SYS_GUID()
来获得这样的自动增量。
CREATE TABLE qname
(qname_id RAW(16) DEFAULT SYS_GUID() PRIMARY KEY,
name VARCHAR2(30));
(或通过修改列)
现在,您的qname_id
列将接受“全球唯一标识符值”。
您可以通过忽略emp_id列来在表中插入值。
INSERT INTO qname (name) VALUES ('name value');
因此,它会为您的qname_id
列插入唯一值。