人大金仓数据库使用总结

人大金仓是国产数据库,但是网上资料较少。这个项目偶然使用了这个数据库。就将使用过程中产生的一些问题总结一下,发表出来。大家有什么问题也可以在评论区提出,我们一起研究讨论。

这个数据库是仿照Oracle数据库做的,所以有些疑难问题而已参照Oracle的做法来。还是不行的话,就只能通过查看人大金仓的帮助文档来找解决方案了。



  • 更新表结构时出错

SQL语句:

alter table TB_CA ALTER COLUMN CA_NAME TYPE VARCHAR(100);

报错信息:

执行语句:1
alter table TB_CA ALTER COLUMN CA_NAME TYPE VARCHAR(100);
执行成功: 否
执行耗时: 3 毫秒
服务器消息: 
[KingbaseES Server]ERROR: 不能使用视图或者规则修改一个列的类型

0 条语句执行成功
1 条语句执行失败

根据错误可以知道,这是因为在视图中引用了该字段,所以不允许修改。
我们可以先执行删除视图的操作,然后再修改该字段,之后再执行视图的创建操作
可以这样写:

-- 先删除用的到视图
DROP VIEW "PUBLIC"."VW_CERT_POLICY";

-- 然后执行相应的修改操作
alter table TB_CA ALTER COLUMN CA_NAME TYPE VARCHAR(100);

-- 最后再将该视图重建即可。即创建视图
CREATE FORCE VIEW "PUBLIC"."VW_CERT_POLICY"("CA_ID","RPOLICY_ID","ATTRIBUTE_NAME","ATTRIBUTE_ITEM_IN_CERT","ATTRIBUTE_IN_CERT_TYPE","CA_NAME")
AS
 SELECT TB_CA.CA_ID, TB_CERT_POLICY.RPOLICY_ID, TB_CERT_POLICY.ATTRIBUTE_NAME, TB_CERT_POLICY.ATTRIBUTE_ITEM_IN_CERT, TB_CERT_POLICY.ATTRIBUTE_IN_CERT_TYPE, TB_CERT_POLICY.CA_NAME
   FROM TB_CERT_POLICY
   LEFT JOIN TB_CA ON TB_CERT_POLICY.CA_NAME = TB_CA.CA_NAME;





- 删除数据时的空值问题

delete from TB_APP where APP_NAME is null;  --删除varchar类型的空值用 is null
delete from TB_OPT_LOG where APP_REGION='';  --删除text类型的空值用 =''





- 创建表并新增一条数据

CREATE TABLE "PUBLIC"."TB_SYS_CONFIGURE"(
"ATTR_KEY" VARCHAR (100) NOT NULL ,
"ATTR_VALUE" VARCHAR (100) NOT NULL
)WITHOUT OIDS
TABLESPACE "SYSTEM";

--新增一条数据
INSERT INTO TB_SYS_CONFIGURE
(ATTR_KEY, ATTR_VALUE)
VALUES ('accessCount', '2764'); 

或是创建之后新增多条数据

CREATE TABLE "PUBLIC"."TB_SYS_CONFIGURE"(
"ATTR_KEY" VARCHAR (100) NOT NULL ,
"ATTR_VALUE" VARCHAR (100) NOT NULL
)WITHOUT OIDS
TABLESPACE "SYSTEM";

--新增多条数据,多条数据之间以逗号分隔
INSERT INTO TB_SYS_CONFIGURE
(ATTR_KEY, ATTR_VALUE)
VALUES ('accessCount', '2764'),
 ('accessCountOne', '3456'),
 ('accessCountTwo', '7890'); 

你可能感兴趣的:(数据库)