当前位置: 首页 > news >正文

KingbaseES SQL Server模式扩展属性管理:三大存储过程实战指南

文章目录

  • 概述
  • 一、sp_addextendedproperty - 添加扩展属性
    • 实战操作
      • 案例1:为数据库添加扩展属性
      • 案例2:为Schema添加扩展属性
      • 案例3:为表添加扩展属性
      • 案例4:为列添加扩展属性
  • 二、sp_dropextendedproperty - 删除扩展属性
    • 实战案例
      • 案例1:删除数据库级别的扩展属性
      • 案例2:删除表级别的扩展属性
      • 案例3:批量删除操作
  • 三、sp_updateextendedproperty - 更新扩展属性
    • 实战案例
      • 案例1:更新数据库版本信息
      • 案例2:更新表描述信息
      • 案例3:批量更新列的业务规则
  • 总结

概述

本文讲解KingbaseES电科金仓数据库引擎的存储过程(SQL Server模式),分别是sp_addextendedpropertysp_dropextendedpropertysp_updateextendedproperty,作用的话是允许开发者为数据库对象添加自定义的描述信息

在这里插入图片描述

一、sp_addextendedproperty - 添加扩展属性

sp_addextendedproperty存储过程用于将扩展属性添加到数据库对象中,支持从数据库级别到列级别的多层次对象。
语法结构如下:

sp_addextendedproperty[ @name = ] { 'property_name' }[ , [ @value = ] { 'value' }[ , [ @level0type = ] { 'level0_object_type' }, [ @level0name = ] { 'level0_object_name' }[,[@level1type= ] { 'level1_object_type' },[@level1name= ] { 'level1_object_name' }[,[@level2type=] { 'level2_object_type' },[@level2name=] { 'level2_object_name' }]]]]

我来解释一下参数
@name的类型是name,用于扩展属性名称,值的话不能是NULL
@value的类型是sql_variant,是属性值,最大为7500字节
level0type的类型是varchar(128),是0级对象类型
level0name的类型是name,是0级对象名称
然后@level1type@level1name就是1级对象类型和1级对象名称

对象的层次结构如下:

数据库 (Database)
├── 0级对象: SCHEMA, USER, TYPE, FILEGROUP, TRIGGER
│   └── 1级对象: TABLE, VIEW, FUNCTION, PROCEDURE, SEQUENCE
│       └── 2级对象: COLUMN, INDEX, CONSTRAINT, TRIGGER

实战操作

下面来进行实战操作,操作之前要保证我们的计算机安装了KingbaseES
可以参考如下文章来安装
麒麟V10 + Docker部署KingbaseES数据库实战教程:点击跳转
​​金仓数据库KingbaseES V9R1C10安装教程 - Windows版详细指南​:点击跳转
官方教程:点击跳转

案例1:为数据库添加扩展属性

为当前数据库添加版本信息

-- 添加数据库版本信息
EXEC sp_addextendedproperty@name = 'Database_Version',@value = 'v2.1.0';

验证添加结果:

-- 查询数据库扩展属性
SELECT class_desc, minor_id, name, value 
FROM sys.extended_properties 
WHERE name = 'Database_Version';

执行结果如下:

 class_desc | minor_id |      name       | value
------------+----------+-----------------+-------DATABASE   |        0 | Database_Version| v2.1.0
(1 row)

案例2:为Schema添加扩展属性

创建测试Schema并添加属性:

-- 创建业务Schema
CREATE SCHEMA business_schema;-- 为Schema添加描述信息
EXEC sp_addextendedproperty@name = 'Description',@value = '业务核心数据Schema,包含订单、客户等核心表',@level0type = 'SCHEMA',@level0name = 'business_schema';

案例3:为表添加扩展属性

创建客户表并添加详细描述:

-- 创建客户表
CREATE TABLE business_schema.customers (customer_id SERIAL PRIMARY KEY,customer_name VARCHAR(100) NOT NULL,email VARCHAR(255),phone VARCHAR(20),created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);-- 为表添加扩展属性
EXEC sp_addextendedproperty@name = 'Table_Purpose',@value = '存储客户基本信息,包括联系方式和创建时间',@level0type = 'SCHEMA',@level0name = 'business_schema',@level1type = 'TABLE',@level1name = 'customers';-- 添加表的创建者信息
EXEC sp_addextendedproperty@name = 'Created_By',@value = '张三 - 数据架构师',@level0type = 'SCHEMA',@level0name = 'business_schema',@level1type = 'TABLE',@level1name = 'customers';

案例4:为列添加扩展属性

为表的关键列添加详细说明:

-- 为customer_id列添加说明
EXEC sp_addextendedproperty@name = 'Column_Description',@value = '客户唯一标识符,自动递增主键',@level0type = 'SCHEMA',@level0name = 'business_schema',@level1type = 'TABLE',@level1name = 'customers',@level2type = 'COLUMN',@level2name = 'customer_id';-- 为email列添加业务规则说明
EXEC sp_addextendedproperty@name = 'Business_Rule',@value = '邮箱地址必须符合RFC标准,用于发送营销邮件和账单通知',@level0type = 'SCHEMA',@level0name = 'business_schema',@level1type = 'TABLE',@level1name = 'customers',@level2type = 'COLUMN',@level2name = 'email';

二、sp_dropextendedproperty - 删除扩展属性

sp_dropextendedproperty存储过程用于删除现有的扩展属性,支持精确定位到具体对象的特定属性。
语法结构如下:

sp_dropextendedproperty[ @name = ] { 'property_name' }[ , [ @level0type = ] { 'level0_object_type' }, [ @level0name = ] { 'level0_object_name' }[ , [ @level1type = ] { 'level1_object_type' }, [ @level1name = ] { 'level1_object_name' }[ , [@level2type= ] { 'level2_object_type' }, [@level2name=] { 'level2_object_name' }]]]

实战案例

下面来进行实战操作,我会根据几个案例来进行演示

案例1:删除数据库级别的扩展属性

-- 查看当前数据库的扩展属性
SELECT name, value FROM sys.extended_properties 
WHERE class_desc = 'DATABASE';-- 删除数据库版本信息
EXEC sp_dropextendedproperty@name = 'Database_Version';-- 验证删除结果
SELECT name, value FROM sys.extended_properties 
WHERE class_desc = 'DATABASE' AND name = 'Database_Version';

执行结果

 sp_dropextendedproperty
-------------------------0
(1 row)-- 查询结果为空,表示删除成功

案例2:删除表级别的扩展属性

-- 删除表的创建者信息
EXEC sp_dropextendedproperty@name = 'Created_By',@level0type = 'SCHEMA',@level0name = 'business_schema',@level1type = 'TABLE',@level1name = 'customers';

案例3:批量删除操作

创建一个便捷的查询来查看所有扩展属性:

-- 创建视图来方便查看扩展属性
CREATE OR REPLACE VIEW v_extended_properties AS
SELECT ep.class_desc,COALESCE(s.schema_name, '') as schema_name,COALESCE(o.object_name, '') as object_name,COALESCE(c.column_name, '') as column_name,ep.name as property_name,ep.value as property_value
FROM sys.extended_properties ep
LEFT JOIN (SELECT oid, nspname as schema_name FROM pg_namespace
) s ON ep.major_id = s.oid AND ep.class_desc = 'SCHEMA'
LEFT JOIN (SELECT oid, relname as object_name, relnamespaceFROM pg_class
) o ON ep.major_id = o.oid AND ep.class_desc = 'OBJECT_OR_COLUMN'
LEFT JOIN (SELECT attrelid, attname as column_name, attnumFROM pg_attribute
) c ON ep.major_id = c.attrelid AND ep.minor_id = c.attnum AND ep.class_desc = 'OBJECT_OR_COLUMN';-- 查看所有扩展属性
SELECT * FROM v_extended_properties ORDER BY class_desc, schema_name, object_name;

三、sp_updateextendedproperty - 更新扩展属性

sp_updateextendedproperty存储过程用于更改现有扩展属性的值,保持属性名称不变。

语法结果如下:

sp_updateextendedproperty  [ @name = ]{ 'property_name' }[ , [ @value = ]{ 'value' }[, [ @level0type = ]{ 'level0_object_type' }, [ @level0name = ]{ 'level0_object_name' }[, [ @level1type = ]{ 'level1_object_type' }, [ @level1name = ]{ 'level1_object_name' }[,[@level2type= ]{ 'level2_object_type' },[@level2name = ]{ 'level2_object_name' }]]  ]  ]

实战案例

下面来进行实战操作,我会根据几个案例来进行演示

案例1:更新数据库版本信息

-- 重新添加数据库版本信息
EXEC sp_addextendedproperty@name = 'Database_Version',@value = 'v2.1.0';-- 更新数据库版本到新版本
EXEC sp_updateextendedproperty@name = 'Database_Version',@value = 'v2.2.0-release';-- 验证更新结果
SELECT name, value FROM sys.extended_properties 
WHERE name = 'Database_Version';

执行结果如下:

 sp_updateextendedproperty
---------------------------0
(1 row)name      |     value
---------------+---------------
Database_Version| v2.2.0-release
(1 row)

案例2:更新表描述信息

-- 查看当前表的描述
SELECT name, value FROM sys.extended_properties 
WHERE name = 'Table_Purpose';-- 更新表的用途描述
EXEC sp_updateextendedproperty@name = 'Table_Purpose',@value = '客户主数据表,存储客户基本信息、联系方式和重要业务标识',@level0type = 'SCHEMA',@level0name = 'business_schema',@level1type = 'TABLE',@level1name = 'customers';

案例3:批量更新列的业务规则

-- 为多个列添加数据质量规则
EXEC sp_addextendedproperty@name = 'Data_Quality_Rule',@value = '不能为空,长度1-100字符',@level0type = 'SCHEMA',@level0name = 'business_schema',@level1type = 'TABLE',@level1name = 'customers',@level2type = 'COLUMN',@level2name = 'customer_name';-- 更新数据质量规则
EXEC sp_updateextendedproperty@name = 'Data_Quality_Rule',@value = '必填字段,长度2-100字符,不能包含特殊符号',@level0type = 'SCHEMA',@level0name = 'business_schema',@level1type = 'TABLE',@level1name = 'customers',@level2type = 'COLUMN',@level2name = 'customer_name';

总结

总结一下,本文详细的介绍了KingbaseES数据库引擎(SQL Server)模式下三个重要的扩展属性管理存储过程。
sp_addextendedproperty:添加扩展属性,为数据库对象增加自定义描述信息
sp_dropextendedproperty:删除扩展属性,清理不需要的元数据
sp_updateextendedproperty:更新扩展属性,修改现有属性值

支持从数据库级别到列级别的完整对象层次结构,以及参数设计的也非常灵活。
实际应用价值话在于,可以为数据库对象添加业务含义说明,记录一些数据质量规则和业务规则。便于团队的新成员快速理解数据库结构。

总之,这三个存储过程构成了完整的扩展属性生命周期管理体系,是KingbaseES数据库进行元数据管理和文档化的重要工具,特别适合企业级应用中对数据库对象进行规范化管理的场景。

http://www.dtcms.com/a/473768.html

相关文章:

  • 5118网站怎么做的登录贵州省住房和城乡建设厅网站
  • 开源 C++ QT QML 开发(十六)进程--共享内存
  • 密码学系列 - 零知识证明(ZKP) - MSM运算
  • 厦门网站制作推广友链是什么
  • 大的网站建设公司好赣州章贡区最新招聘信息
  • 总结Vue.js等成功项目的生态建设经验
  • 西安北郊网站开发wordpress上传附件
  • mysql读写分离中间件——Atlas详解
  • jndi使用druid,在tomcat中配置druid监控
  • tomcat 默认编码的设置
  • 【mybatisPlus详解】
  • 回归与分类算法全解析:从理论到实践
  • 什么是 Qt 的元对象系统?
  • 【LeetCode】68. 文本左右对齐
  • 第十九周周报
  • Springboot 常见面试题汇总
  • 驻马店市做网站百度收录软件
  • 在实际项目中,Java 应用的性能瓶颈通常出现在哪些方面,又该如何有效地进行优化?
  • 08_Freqtrade配置与开发环境
  • C++实例
  • 复习总结最终版:Linux驱动
  • Python全栈(基础篇)——Day09:后端内容(列表生成式+生成器+迭代器+实战演示+每日一题)
  • kanass入门到实战(18) - 如何通过仪表盘,快速直观掌握项目进度及度量
  • seo网站优化工具大全wordpress 百度地图api
  • webstorm 调试时不能连接网页
  • 互助网站建设公司网页制作 主流软件
  • 微信公众号登录wordpress网站安徽城乡建设厅网站证件
  • 用wordpress建公司网站步骤郑州橱柜网站建设
  • StringBuffer和StringBuilder的扩容机制
  • 计数 dp