GBase 8s数据库SQL对象中关键字使用

数据库开发人员在使用SQL的时候,不可避免的会碰到类似以下情况。比如:使用user作为用户名的字段名称,使用timestamp作为时间戳的字段名称。然而,大多数数据库均可能把user,timestamp等作为了保留的关键字。这时如果开发人员设计了user关键字为表字段,在SQL操作时,可能就会碰到些问题。
比如以下示例:

create table tab2(id serial,user varchar(60), timestamp timestamp);

--插入记录
insert into tab2 values(0,'test001',current year to second);

此时查询所有字段(*),结果正常。

> select * from tab2;

id         1
user       test001
timestamp  2021-02-28 22:18:56

1 row(s) retrieved.

在显示的查询user或者timestamp时,异常。

> select id,user from tab2;

         id (expression)                     

          1 gbasedbt                        

1 row(s) retrieved.

> select id,timestamp from tab2;

  201: A syntax error has occurred.
Error in line 1
Near character position 21

其原因就是user,timestamp为系统保留的关键字。要避免出现这样的问题,要求开发人员在设置表结构时,避免使用关键字作为字段名称或者表名称。
如果已经使用了,数据库系统需要特别处理,即在字段名前加上表名或者表别名。

> select id,tab2.user,tab2.timestamp from tab2;

id         1
user       test001
timestamp  2021-02-28 22:18:56

1 row(s) retrieved.

标签: none

添加新评论