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.