在使用ArcSDE进行Oracle的空间化的操作后,会在Oracle表中生成shape和objectid字段。而此时是可以用arcsde操作oracle的,但是你会发现不能用sql语句进行任何修改oracle表的操作。
为什么?因为此时oracle有两个主键了,一个是刚生成的objectid,另一个是你建表时产生的主键。违反了数据库第二范式,即:主键唯一性约束。
这在数据库中是不容许发生的,有什么解决方案呢?
从根本上,当然是去除一个主键,删除掉objectid那个主键。注意:是删除它作为主键的那个代码,但是还保留着这个字段,否则arcsde没法工作了...只是这样的话还不行,还要将objectid字段的nullable值先设为可以为空,再取消掉。如图:
经过上面的设置,就可以用arcsde和sql同时操作数据库了。