在上次写的一篇笔记(在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中除非字段名与关键字冲突,否则不要乱用""以免造成不必要的麻烦。

相关文章:

  • 2021-11-20
  • 2021-07-01
  • 2021-08-08
  • 2022-12-23
  • 2021-11-03
  • 2022-12-23
  • 2021-12-17
猜你喜欢
  • 2022-02-18
  • 2021-12-15
  • 2021-05-31
  • 2021-07-28
  • 2021-10-29
  • 2022-12-23
  • 2021-07-23
相关资源
相似解决方案