heminzhou

程序员民工的笔记本

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
      在上次写的一篇笔记(在Oracle中使用内部关键字做字段名)中我提到用""解决Oracle关键字作为字段名的办法。最近却发现""不同于SQL Server中的[],乱用会造成不必要的麻烦。
      发现这个情况源于使用PowerDesigner做数据库设计,我直接使用了它生成的SQL脚本来创建数据库。这当然没有出现问题,但接下来向表中插入数据时却报出了ORA-00904 invalid identifier错误,字段名不存在?由于是用的NHibernate操作数据库加上刚学习这不久,于是怀疑是不是NHibernate用的不对。在仔细查阅了文档并确认映射无误后,又直接写INSERT还是报错,我开始怀疑是字段名的问题。
      查看PowerDesigner生成的脚本,所有字段名都加上了"",同时在定义PrimaryKey等约束时也对字段名加上了"",难道说?于是尝试用如下两句建两张表:
      CREATE TABLE Table1 (Field1 INT);
      CREATE TABLE Table2 ("Field1" INT);
      再尝试用如下两句插入记录:
      INSERT INTO Table1 (Field1) VALUES (1);
      INSERT INTO Table2 (Field1) VALUES (1); // ORA-00904
      结果第一句正确,第二句报错ORA-00904,OK这下问题清楚了。可见在Oracle中除非字段名与关键字冲突,否则不要乱用""以免造成不必要的麻烦。
posted on 2007-09-20 09:31  heminzhou  阅读(1326)  评论(0编辑  收藏  举报