查看: 9876|回复: 11

oracle创建主、外键约束报错

[复制链接]
论坛徽章:
16
2011新春纪念徽章
日期:2011-01-04 10:36:17优秀写手
日期:2014-03-12 06:00:13马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08茶鸡蛋
日期:2013-02-28 16:07:01复活蛋
日期:2013-02-27 18:28:01迷宫蛋
日期:2013-01-28 09:52:03奥运会纪念徽章:举重
日期:2012-06-28 11:26:23鲜花蛋
日期:2012-06-05 09:53:53双黄蛋
日期:2012-01-06 09:22:33
跳转到指定楼层
1#
发表于 2010-12-27 15:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
OS: rhel linux as4   
DB: oracle10g r2

从oracle在线文档上搜到创建主、外键的语句如下:

ALTER TABLE Dept_tab ADD CONSTRAINT Dept_pkey PRIMARY KEY (deptno);

ALTER TABLE Emp_tab  ADD CONSTRAINT Dept_fkey FOREIGN KEY (Deptno) REFERENCES Dept_tab;

   
于是作了如下实验:

1:添加主键:
SQL> alter table emp add constraint pk-emp primary key (empno);
alter table emp add constraint pk-emp primary key (empno)
                                 *
ERROR at line 1:
ORA-00904: : invalid identifier



SQL> alter table emp add constraint emp_pkey primary key(empno);
Table altered.

SQL> alter table emp add constraint xx_pkey primary key(empno);

Table altered.

2:添加外键

SQL> alter table emp add constraint dept_fkey foreign key(deptno) references dept;

Table altered.

SQL> alter table emp add constraint dept-fkey foreign key (deptno) references dept;
alter table emp add constraint dept-fkey foreign key (deptno) references dept
                                   *
ERROR at line 1:
ORA-00904: : invalid identifier


SQL> alter table emp add constraint xx_fkey foreign key (deptno) references dept;
Table altered.




从实验中得出结论,不管是添加主键,还是添加外键,都必须使用特定的格式  _pkey  或  _fkey


是这样的么 ?  前辈们可否再指点一下!


注意蓝色部分!
论坛徽章:
51
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:22铁扇公主
日期:2012-02-21 15:03:13最佳人气徽章
日期:2012-03-13 17:39:18ITPUB季度 技术新星
日期:2012-05-22 15:10:11ITPUB 11周年纪念徽章
日期:2012-10-09 18:13:332013年新春福章
日期:2013-02-25 14:51:24ITPUB社区12周年站庆徽章
日期:2013-08-12 09:34:36itpub13周年纪念徽章
日期:2014-09-28 10:55:55
2#
发表于 2010-12-27 15:43 | 只看该作者

回复 #1 sxitsxit 的帖子

按照你测试的结果 应该是不能用-
而不是只能用_吧。

使用道具 举报

回复
论坛徽章:
16
2011新春纪念徽章
日期:2011-01-04 10:36:17优秀写手
日期:2014-03-12 06:00:13马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08茶鸡蛋
日期:2013-02-28 16:07:01复活蛋
日期:2013-02-27 18:28:01迷宫蛋
日期:2013-01-28 09:52:03奥运会纪念徽章:举重
日期:2012-06-28 11:26:23鲜花蛋
日期:2012-06-05 09:53:53双黄蛋
日期:2012-01-06 09:22:33
3#
 楼主| 发表于 2010-12-27 15:58 | 只看该作者
我又使了几把,发现还真的必须带 下划线
如果不带下划线,那么就报错

SQL>  alter table emp add constraint xx_key foreign key (deptno) references dept;

Table altered.

SQL> alter table emp add constraint xx_xx1 foreign key (deptno) references dept;

Table altered.

SQL> alter table emp add constraint cc_45 foreign key (deptno) references dept;

Table altered.

使用道具 举报

回复
论坛徽章:
16
2011新春纪念徽章
日期:2011-01-04 10:36:17优秀写手
日期:2014-03-12 06:00:13马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08茶鸡蛋
日期:2013-02-28 16:07:01复活蛋
日期:2013-02-27 18:28:01迷宫蛋
日期:2013-01-28 09:52:03奥运会纪念徽章:举重
日期:2012-06-28 11:26:23鲜花蛋
日期:2012-06-05 09:53:53双黄蛋
日期:2012-01-06 09:22:33
4#
 楼主| 发表于 2010-12-27 21:52 | 只看该作者
应该是这样的吧  前辈们

使用道具 举报

回复
论坛徽章:
12
ITPUB9周年纪念徽章
日期:2010-10-08 09:31:22问答徽章
日期:2013-10-28 21:08:01鲜花蛋
日期:2012-04-01 10:01:40ITPUB十周年纪念徽章
日期:2011-11-01 16:25:512011新春纪念徽章
日期:2011-02-18 11:43:352011新春纪念徽章
日期:2011-01-04 10:36:172010广州亚运会纪念徽章:棋类
日期:2010-12-22 15:18:152010广州亚运会纪念徽章:举重
日期:2010-12-01 12:44:462010广州亚运会纪念徽章:壁球
日期:2010-11-29 11:25:452010广州亚运会纪念徽章:田径
日期:2010-11-29 11:13:30
5#
发表于 2010-12-27 22:53 | 只看该作者
原帖由 sxitsxit 于 2010-12-27 15:58 发表
我又使了几把,发现还真的必须带 下划线
如果不带下划线,那么就报错

SQL>  alter table emp add constraint xx_key foreign key (deptno) references dept;

Table altered.

SQL> alter table emp add constraint xx_xx1 foreign key (deptno) references dept;

Table altered.

SQL> alter table emp add constraint cc_45 foreign key (deptno) references dept;

Table altered.

不是必须要下划线,而是你的‘-’这个符号是不允许的!

使用道具 举报

回复
论坛徽章:
16
2011新春纪念徽章
日期:2011-01-04 10:36:17优秀写手
日期:2014-03-12 06:00:13马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08茶鸡蛋
日期:2013-02-28 16:07:01复活蛋
日期:2013-02-27 18:28:01迷宫蛋
日期:2013-01-28 09:52:03奥运会纪念徽章:举重
日期:2012-06-28 11:26:23鲜花蛋
日期:2012-06-05 09:53:53双黄蛋
日期:2012-01-06 09:22:33
6#
 楼主| 发表于 2010-12-28 10:20 | 只看该作者
哦  等下 我再测试看看 !
写了!

使用道具 举报

回复
论坛徽章:
16
2011新春纪念徽章
日期:2011-01-04 10:36:17优秀写手
日期:2014-03-12 06:00:13马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08茶鸡蛋
日期:2013-02-28 16:07:01复活蛋
日期:2013-02-27 18:28:01迷宫蛋
日期:2013-01-28 09:52:03奥运会纪念徽章:举重
日期:2012-06-28 11:26:23鲜花蛋
日期:2012-06-05 09:53:53双黄蛋
日期:2012-01-06 09:22:33
7#
 楼主| 发表于 2010-12-28 22:19 | 只看该作者
刚有测试了一把

SQL> alter table dept add constraint xxx primary key (deptno);

Table altered.


SQL> alter table dept add constraint xx*ss primary key (deptno);
alter table dept add constraint xx*ss primary key (deptno)
                                  *
ERROR at line 1:
ORA-00904: : invalid identifier

SQL> alter table dept add constraint sxit.df primary key (deptno);
alter table dept add constraint sxit.df primary key (deptno)
                                    *
ERROR at line 1:
ORA-00904: : invalid identifier

确实,除了一些特定的字符以外,是可以任意添加 主、外键的!  

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
8#
发表于 2010-12-28 22:26 | 只看该作者
当然,文档很清楚,标识符很多特殊符号都不允许的,当然你加双引号应该就可以了
为什么不看看文档找错误原因呢,写这么多也浪费时间不是...

使用道具 举报

回复
论坛徽章:
16
2011新春纪念徽章
日期:2011-01-04 10:36:17优秀写手
日期:2014-03-12 06:00:13马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08茶鸡蛋
日期:2013-02-28 16:07:01复活蛋
日期:2013-02-27 18:28:01迷宫蛋
日期:2013-01-28 09:52:03奥运会纪念徽章:举重
日期:2012-06-28 11:26:23鲜花蛋
日期:2012-06-05 09:53:53双黄蛋
日期:2012-01-06 09:22:33
9#
 楼主| 发表于 2010-12-28 22:36 | 只看该作者
就是没在文档中找到错误的原因  所以才测试的

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
10#
发表于 2010-12-28 23:10 | 只看该作者
文档有啊,第2章,Schema Object Names and Qualifiers


加双引号就不用遵守规则,但是不建议使用

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表