oracle数据库的主键递增问题,插入数据问题 oracle数据库的主键递增问题oracle插入数据oracle 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 通过user_tab_cols,查看该表对应字段上是否存在默认值。。如果没有默认值就很麻烦了。。建议还是别递增了,以后的主键都取sys_guid()吧。。 不好意思,我不知道如何:通过user_tab_cols,查看该表对应字段上是否存在默认值。 能否在说清楚一些呢。我现在可以打开表的设计视图,下图EFID: 不好意思,我不知道如何:通过user_tab_cols,查看该表对应字段上是否存在默认值。 能否在说清楚一些呢。我现在可以打开表的设计视图,下图EFID:应该没有默认值,那么你所说的从sqlserver导入oralce时候不用,我不太明白你是通过什么方式导入的。是通过程序自己写的还是其他的工具。另外建议你查看一下表中字段到底是什么样的,是什么样的一个递增主键。 不好意思,我不知道如何:通过user_tab_cols,查看该表对应字段上是否存在默认值。 能否在说清楚一些呢。我现在可以打开表的设计视图,下图EFID:应该没有默认值,那么你所说的从sqlserver导入oralce时候不用,我不太明白你是通过什么方式导入的。是通过程序自己写的还是其他的工具。另外建议你查看一下表中字段到底是什么样的,是什么样的一个递增主键。我现在就是直接用Navicat for Oracle软件连接到的Oracle数据库上,然后执行Sql语句:[code=sql][/Insert into TRAIN.ELECTRONFEE(EFID, YEAR, FEE, DEPTID, USERID, TYPE)Values(147929, 2014, 50 , 101 , 178907 , 2)code]我就是想知道EFID能不能自动来递增,不然就要去获得到最大的EFID值,然后在这个值上面+1,不然就会导致EFID值重复而报错,因为EFID是主键不能重复。 不好意思,我不知道如何:通过user_tab_cols,查看该表对应字段上是否存在默认值。 能否在说清楚一些呢。我现在可以打开表的设计视图,下图EFID:应该没有默认值,那么你所说的从sqlserver导入oralce时候不用,我不太明白你是通过什么方式导入的。是通过程序自己写的还是其他的工具。另外建议你查看一下表中字段到底是什么样的,是什么样的一个递增主键。我现在就是直接用Navicat for Oracle软件连接到的Oracle数据库上,然后执行Sql语句:[/Insert into TRAIN.ELECTRONFEE(EFID, YEAR, FEE, DEPTID, USERID, TYPE)Values(147929, 2014, 50 , 101 , 178907 , 2)code]我就是想知道EFID能不能自动来递增,不然就要去获得到最大的EFID值,然后在这个值上面+1,不然就会导致EFID值重复而报错,因为EFID是主键不能重复。可以,创建一个序列,初始化值为目前id的最大值。因为oracle不可以直接使用序列的值作为默认值。。所以需要创建触发器来在实现自增。需要的话我可以帮你写。建议还是在程序中,[code=sql]Insert into TRAIN.ELECTRONFEE(EFID, YEAR, FEE, DEPTID, USERID, TYPE)Values(序列.nextval, 2014, 50 , 101 , 178907 , 2) 不好意思,我不知道如何:通过user_tab_cols,查看该表对应字段上是否存在默认值。 能否在说清楚一些呢。我现在可以打开表的设计视图,下图EFID:应该没有默认值,那么你所说的从sqlserver导入oralce时候不用,我不太明白你是通过什么方式导入的。是通过程序自己写的还是其他的工具。另外建议你查看一下表中字段到底是什么样的,是什么样的一个递增主键。我现在就是直接用Navicat for Oracle软件连接到的Oracle数据库上,然后执行Sql语句:[/Insert into TRAIN.ELECTRONFEE(EFID, YEAR, FEE, DEPTID, USERID, TYPE)Values(147929, 2014, 50 , 101 , 178907 , 2)code]我就是想知道EFID能不能自动来递增,不然就要去获得到最大的EFID值,然后在这个值上面+1,不然就会导致EFID值重复而报错,因为EFID是主键不能重复。可以,创建一个序列,初始化值为目前id的最大值。因为oracle不可以直接使用序列的值作为默认值。。所以需要创建触发器来在实现自增。需要的话我可以帮你写。建议还是在程序中,[code=sql]Insert into TRAIN.ELECTRONFEE(EFID, YEAR, FEE, DEPTID, USERID, TYPE)Values(序列.nextval, 2014, 50 , 101 , 178907 , 2)多谢,如果我创建一个序列会不会影响之前的程序呢?因为这数据库不是我自己连接,其他人也会往这个数据库中插入数据,我怕我创建完序列之后会影响其他人往里插入数据。 不好意思,我不知道如何:通过user_tab_cols,查看该表对应字段上是否存在默认值。 能否在说清楚一些呢。我现在可以打开表的设计视图,下图EFID:应该没有默认值,那么你所说的从sqlserver导入oralce时候不用,我不太明白你是通过什么方式导入的。是通过程序自己写的还是其他的工具。另外建议你查看一下表中字段到底是什么样的,是什么样的一个递增主键。我现在就是直接用Navicat for Oracle软件连接到的Oracle数据库上,然后执行Sql语句:[/Insert into TRAIN.ELECTRONFEE(EFID, YEAR, FEE, DEPTID, USERID, TYPE)Values(147929, 2014, 50 , 101 , 178907 , 2)code]我就是想知道EFID能不能自动来递增,不然就要去获得到最大的EFID值,然后在这个值上面+1,不然就会导致EFID值重复而报错,因为EFID是主键不能重复。可以,创建一个序列,初始化值为目前id的最大值。因为oracle不可以直接使用序列的值作为默认值。。所以需要创建触发器来在实现自增。需要的话我可以帮你写。建议还是在程序中,[code=sql]Insert into TRAIN.ELECTRONFEE(EFID, YEAR, FEE, DEPTID, USERID, TYPE)Values(序列.nextval, 2014, 50 , 101 , 178907 , 2)多谢,如果我创建一个序列会不会影响之前的程序呢?因为这数据库不是我自己连接,其他人也会往这个数据库中插入数据,我怕我创建完序列之后会影响其他人往里插入数据。如果是这样的话,我建议你还是不要用序列了。。直接使用oracle自带的sys_guid()吧。能保证唯一性。。否则万一别人有自己的序列,别的程序就会报错了。。 oracle中没有自增字段,都是用sequence代替的。主键不能重复,其他人要插入数据应该也是用sequence的,建议和别人统一一下,全用一个sequence。 第一次用oracle,与sql server还是有挺多不同的。多谢 数据文件如何导入到其他数据库 delphi如何链接Oracle数据库? SQL 语句,在线等。。。不知道能不能实现的SQL语句。。。。。 各位大哥:TRC文件错误,数据库启动失败,怎么办啊?急啊! 高分求助,关于oracle的触发器创建用户的问题。 Oracle 在线等 oracle的sequence问题 如何把数据文件移动一个目录? 请问这句SQL怎么写? oracle 排序时 剔除某个值 问一个sql的问题 pl\sql 查询问题
建议还是别递增了,以后的主键都取sys_guid()吧。。
不好意思,我不知道如何:通过user_tab_cols,查看该表对应字段上是否存在默认值。 能否在说清楚一些呢。
我现在可以打开表的设计视图,下图EFID:
不好意思,我不知道如何:通过user_tab_cols,查看该表对应字段上是否存在默认值。 能否在说清楚一些呢。
我现在可以打开表的设计视图,下图EFID:
应该没有默认值,那么你所说的从sqlserver导入oralce时候不用,我不太明白你是通过什么方式导入的。是通过程序自己写的还是其他的工具。
另外建议你查看一下表中字段到底是什么样的,是什么样的一个递增主键。
不好意思,我不知道如何:通过user_tab_cols,查看该表对应字段上是否存在默认值。 能否在说清楚一些呢。
我现在可以打开表的设计视图,下图EFID:
应该没有默认值,那么你所说的从sqlserver导入oralce时候不用,我不太明白你是通过什么方式导入的。是通过程序自己写的还是其他的工具。
另外建议你查看一下表中字段到底是什么样的,是什么样的一个递增主键。
我现在就是直接用Navicat for Oracle软件连接到的Oracle数据库上,然后执行Sql语句:
[code=sql][/
Insert into TRAIN.ELECTRONFEE
(
EFID, YEAR, FEE, DEPTID, USERID, TYPE
)
Values
(
147929, 2014, 50 , 101 , 178907 , 2
)
code]
我就是想知道EFID能不能自动来递增,不然就要去获得到最大的EFID值,然后在这个值上面+1,不然就会导致EFID值重复而报错,因为EFID是主键不能重复。
不好意思,我不知道如何:通过user_tab_cols,查看该表对应字段上是否存在默认值。 能否在说清楚一些呢。
我现在可以打开表的设计视图,下图EFID:
应该没有默认值,那么你所说的从sqlserver导入oralce时候不用,我不太明白你是通过什么方式导入的。是通过程序自己写的还是其他的工具。
另外建议你查看一下表中字段到底是什么样的,是什么样的一个递增主键。
我现在就是直接用Navicat for Oracle软件连接到的Oracle数据库上,然后执行Sql语句:
[/
Insert into TRAIN.ELECTRONFEE
(
EFID, YEAR, FEE, DEPTID, USERID, TYPE
)
Values
(
147929, 2014, 50 , 101 , 178907 , 2
)
code]
我就是想知道EFID能不能自动来递增,不然就要去获得到最大的EFID值,然后在这个值上面+1,不然就会导致EFID值重复而报错,因为EFID是主键不能重复。
可以,创建一个序列,初始化值为目前id的最大值。
因为oracle不可以直接使用序列的值作为默认值。。所以需要创建触发器来在实现自增。需要的话我可以帮你写。
建议还是在程序中,
[code=sql]Insert into TRAIN.ELECTRONFEE
(
EFID, YEAR, FEE, DEPTID, USERID, TYPE
)
Values
(
序列.nextval, 2014, 50 , 101 , 178907 , 2
)
不好意思,我不知道如何:通过user_tab_cols,查看该表对应字段上是否存在默认值。 能否在说清楚一些呢。
我现在可以打开表的设计视图,下图EFID:
应该没有默认值,那么你所说的从sqlserver导入oralce时候不用,我不太明白你是通过什么方式导入的。是通过程序自己写的还是其他的工具。
另外建议你查看一下表中字段到底是什么样的,是什么样的一个递增主键。
我现在就是直接用Navicat for Oracle软件连接到的Oracle数据库上,然后执行Sql语句:
[/
Insert into TRAIN.ELECTRONFEE
(
EFID, YEAR, FEE, DEPTID, USERID, TYPE
)
Values
(
147929, 2014, 50 , 101 , 178907 , 2
)
code]
我就是想知道EFID能不能自动来递增,不然就要去获得到最大的EFID值,然后在这个值上面+1,不然就会导致EFID值重复而报错,因为EFID是主键不能重复。
可以,创建一个序列,初始化值为目前id的最大值。
因为oracle不可以直接使用序列的值作为默认值。。所以需要创建触发器来在实现自增。需要的话我可以帮你写。
建议还是在程序中,
[code=sql]Insert into TRAIN.ELECTRONFEE
(
EFID, YEAR, FEE, DEPTID, USERID, TYPE
)
Values
(
序列.nextval, 2014, 50 , 101 , 178907 , 2
)
多谢,如果我创建一个序列会不会影响之前的程序呢?因为这数据库不是我自己连接,其他人也会往这个数据库中插入数据,我怕我创建完序列之后会影响其他人往里插入数据。
不好意思,我不知道如何:通过user_tab_cols,查看该表对应字段上是否存在默认值。 能否在说清楚一些呢。
我现在可以打开表的设计视图,下图EFID:
应该没有默认值,那么你所说的从sqlserver导入oralce时候不用,我不太明白你是通过什么方式导入的。是通过程序自己写的还是其他的工具。
另外建议你查看一下表中字段到底是什么样的,是什么样的一个递增主键。
我现在就是直接用Navicat for Oracle软件连接到的Oracle数据库上,然后执行Sql语句:
[/
Insert into TRAIN.ELECTRONFEE
(
EFID, YEAR, FEE, DEPTID, USERID, TYPE
)
Values
(
147929, 2014, 50 , 101 , 178907 , 2
)
code]
我就是想知道EFID能不能自动来递增,不然就要去获得到最大的EFID值,然后在这个值上面+1,不然就会导致EFID值重复而报错,因为EFID是主键不能重复。
可以,创建一个序列,初始化值为目前id的最大值。
因为oracle不可以直接使用序列的值作为默认值。。所以需要创建触发器来在实现自增。需要的话我可以帮你写。
建议还是在程序中,
[code=sql]Insert into TRAIN.ELECTRONFEE
(
EFID, YEAR, FEE, DEPTID, USERID, TYPE
)
Values
(
序列.nextval, 2014, 50 , 101 , 178907 , 2
)
多谢,如果我创建一个序列会不会影响之前的程序呢?因为这数据库不是我自己连接,其他人也会往这个数据库中插入数据,我怕我创建完序列之后会影响其他人往里插入数据。如果是这样的话,我建议你还是不要用序列了。。直接使用oracle自带的sys_guid()吧。
能保证唯一性。。否则万一别人有自己的序列,别的程序就会报错了。。
主键不能重复,其他人要插入数据应该也是用sequence的,建议和别人统一一下,全用一个sequence。
第一次用oracle,与sql server还是有挺多不同的。多谢