
概述
有小伙伴提问题[-2670
]什么原因,想着好记性不如烂笔头,也为了让更多不了解的小伙伴知晓,把这个问题记录下来分享给大家。
问题现象
创建以下SQL
时提示[-2670]:对象[ID]DEFAULT
约束表达式无效,如下所示:
SQL> CREATE TABLE "EMPTEST"
2 (
3 "ID" NUMBER(11,0) DEFAULT EMPTEST_SEQ.NEXTVAL NOT NULL,
4 "NAME" VARCHAR2(64) NOT NULL,
5 NOT CLUSTER PRIMARY KEY("ID")) ;
CREATE TABLE "EMPTEST"
(
"ID" NUMBER(11,0) DEFAULT EMPTEST_SEQ.NEXTVAL NOT NULL,
"NAME" VARCHAR2(64) NOTNULL,
NOT CLUSTER PRIMARY KEY("ID")) ;
第5 行附近出现错误[-2670]:对象[ID]DEFAULT约束表达式无效.
已用时间: 44.809(毫秒). 执行号:0.
SQL>
错误定位在第 5 行附近,提示默认约束表达式无效。
问题分析
通过以下查询确认关键信息:
-- 序列所有者验证
SELECT OWNER, OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_NAME='EMPTEST_SEQ';
-- 当前用户验证
SELECT USER;
查询对象与用户信息
SQL> SELECT OWNER,OBJECT_NAME from DBA_OBJECTS where OBJECT_NAME ='EMPTEST_SEQ';
行号 OWNER OBJECT_NAME
---------- -------- -----------
1 DBDOCTOR EMPTEST_SEQ
已用时间: 43.125(毫秒). 执行号:12319901.
SQL>
SQL> select user;
行号 USER
---------- ------
1 SYSDBA
已用时间: 41.441(毫秒). 执行号:12319902.
SQL>
结果显示:
EMPTEST_SEQ
属于DBDOCTOR
用户当前操作用户为 SYSDBA
核心问题:DM 默认采用严格的权限隔离机制,用户只能直接访问自己拥有的对象。
解决方案
方法一:在后面的版本中可以使用SET SCHEMA
方式切换 schema。
SQL> SET SCHEMA DBDOCTOR;
操作已执行
已用时间: 42.462(毫秒). 执行号:0.
SQL> CREATE TABLE "EMPTEST"
2 (
3 "ID" NUMBER(11,0) DEFAULT EMPTEST_SEQ.NEXTVAL NOT NULL,
4 "NAME" VARCHAR2(64) NOT NULL,
5 NOT CLUSTER PRIMARY KEY("ID")) ;
操作已执行
已用时间: 51.425(毫秒). 执行号:12319904.
SQL>
适用场景:需要长期在多个SCHEMA
间操作的场景,推荐使用此方法。
方法二:显式指定SCHEMA
前缀
--删除上一次测试表
SQL> drop table EMPTEST;
操作已执行
已用时间: 84.487(毫秒). 执行号:12319906.
SQL> CREATE TABLE DBDOCTOR."EMPTEST"
2 (
3 "ID" NUMBER(11,0) DEFAULT DBDOCTOR.EMPTEST_SEQ.NEXTVAL NOT NULL,
4 "NAME" VARCHAR2(64) NOT NULL,
5 NOT CLUSTER PRIMARY KEY("ID")) ;
操作已执行
已用时间: 53.653(毫秒). 执行号:12319907.
SQL>
适用场景:临时访问其他SCHEMA
对象时使用。
方法三:切换登录用户
-- 使用DBDOCTOR用户登录
CONNECT DBDOCTOR/xxx@localhost:5236
-- 直接创建表
CREATE TABLE"EMPTEST"(
"ID" NUMBER(11,0) DEFAULT EMPTEST_SEQ.NEXTVAL NOT NULL,
"NAME" VARCHAR2(64) NOT NULL,
PRIMARY KEY ("ID")
);
适用场景:最直接的解决方案,符合最小权限原则。

往期分享
安装部署
1.分享一个以前搭建主备集群遇到的一个路径乱码案例
2.给大家分享如何标准化部署达梦单机环境
3.DM 达梦数据库中大写敏感介绍分享
4.达梦 DSC 集群+DW 备库部署实战:高可用架构搭建指南
数据迁移
1.分享工作中数据迁移的实用技巧与方法
2.Oracle 迁移 DM 数据库实践
3.SQLark 迁移实践分享(oracle-达梦数据库)
4.年过完了,SQLark 3.3 发版了!连接分组,断点续迁,顺滑建表,数据筛选,导出结构这些都有!)
SQL 调优
1.DM 传统行业 SQL 优化案例分享
2.DM 数据库 SQL 优化案例分享
3.如何查询 DM 数据库缓存执行计划与清理
4.使用 ob_tools 包收集分析 oceanbase 数据库 oracle 租户缓慢 sql 语句
5.使用 format_obproxy_digest_log 工具分析 obproxy 网络层耗时 SQL
6.DM 数据库回表优化案例
7.SQL 优化案例分享
8.DM SQL 关联列 like 优化案例
9.达梦数据库 SQL 关联列 like 使用 hint 方式优化案例
工具使用与日常处理
1.DataGrip 访问国产数据库_datagrip 连接国产数据库
2.如何使用 dbeaver 连接达梦数据库
3.更新大字段提示-2201 无效的对象问题
4.DM7 读写分离部署问题总结
5.DM7 读写分离集群备库数据不同步问题处理
6.达梦数据库 DISQL 工具部署及使用技巧
7.达梦数据库日常巡检方法分享
8.如何查询达梦数据库缓存执行计划与清理
9.达梦数据库运维工具分享
10.东方通中间件环境中如何部署达梦企业管理工具(DEM)
11.达梦 dmdbchk 使用秘籍:掌握 DM 数据库检查工具的功能与参数
12.ET 工具快速上手:从入门到精通的使用步骤
13.达梦数据库 SQL 日志详解:关键概念、功能及实践方法
14.搞懂达梦数据库 SQL 日志使用延伸,这些方法超实用!
15.DM 数据库守护集群入门指南:带你走进数据守护的世界




