oracle数据库的主键递增问题,插入数据问题
刚用oracle数据库,我现在想向oracle数据库中插入数据,USER表字段如:U_ID、U_Name,U_ID是主键(我不知道是否设置了自动递增的功能),之前sql server中插入数据的时候U_ID是不用写的,现在我在oracle中不写就会报错提示U_ID不能为空,数据库不是我建立的,之前如何插入数据我也不太清楚。
网上说这样写:
create sequence table_id start with 1 increment by 1;
Insert into TRAIN.USER(U_ID, U_Name)Values(table_id.nextval, ‘张三’);
我这样写之后提示:
[SQL] create sequence table_id start with 1 increment by 1
[Err] ORA-00955: name is already used by an existing object
我的猜测是:是不是之前建立表的时候就已经为这个表建立了这个递增变量,我要插入数据的时候不需要写create sequence table_id start with 1 increment by 1; 直接用这个递增变量.nextval就可以了。
不知道猜测是否正确?如果正确我用什么语句可以获得这个变量的名称呢?
请大家指点一下。
------解决方案--------------------
如果是这样的话,我建议你还是不要用序列了。。直接使用oracle自带的sys_guid()吧。
能保证唯一性。。否则万一别人有自己的序列,别的程序就会报错了。。
------解决方案--------------------oracle中没有自增字段,都是用sequence代替的。
主键不能重复,其他人要插入数据应该也是用sequence的,建议和别人统一一下,全用一个sequence。