云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

对象存储_抖音服务器_折扣

小七 141 0

分布式数据库_如何解决域名解析错误_学生机

到目前为止,SAP Advanced SQL Migration已用于SAP内部项目/POC(概念验证)以及许多不同的客户项目,在这两种情况下,我们都检测到一些目前无法直接转换为Hana的常用结构,可视化数据大屏,其中之一是列默认值,包括调用内置函数的复杂表达式、用户定义函数、使用连接运算符、使用序列函数从序列中获取数字……等等。这种默认值在Hana中是不允许的,查看SAP Hana 2.0 SP4文档:

SAP Hana 2.0 SP4 Create table语句

SAP Advance SQL迁移工具正在捕获这些情况,并指出使用INSERT触发器实现这些默认值的建议,这些建议必须手动完成。更确切地说,插入前行触发器可用于此目的。

这里我给出几个示例来实现此目的:

Oracle table,理财返利平台,大数据时代,带有对\u char+连接运算符的默认调用:

CREATE tablejavier.测试1(ID内景,D日期默认SYSDATE不为空,D2 VARCHAR2(20)默认值为"01"。| |到| char(sysdate,'年月日')不为空)

这可以转换为表,没有任何默认值,但是在插入行触发器之前:

创建列表JAVIER.测试1(ID INT空值,D TIMESTAMP默认当前\u TIMESTAMP不为空,D2 VARCHAR(20)不为空);

在插入前创建触发测试JAVIER.测试1引用新行mynewrow每行开始mynewrow.D2='01'。| |到| varchar(当前|日期,'年月日’);END;

这个触发器的行为类似于Oracle:

hdbsql SP4=>insert intojavier.测试1(id)值(1);1行受影响(总时间10316毫秒;服务器时间2481 usec)

hdbsql SP4=>选择*fromjavier.测试1;ID、D、D21,2019-09-16 13:16:05.322000000,01.09.2019""""选择1行(总时间111693毫秒;服务器时间277 usec)

Oracle表,大数据app,带有序列的默认调用nextval

创建序列JAVIER.序号1从1开始最大值999999999999最小值1无循环缓存20NOORDER;

创建表JAVIER.测试2(ID内景,D日期默认SYSDATE不为空,NUM\ U SEQ NUMBER(10)默认序列号1.nextval NOT NULL);

第一种方法是在插入行触发器之前将其转换为序列+a:

创建序列JAVIER.序号1增加1最小值1最大值999999999999从1开始缓存20无循环;

创建列表JAVIER.测试2(ID INT空值,D TIMESTAMP默认当前\u TIMESTAMP不为空,淘客大联盟,NUM\ SEQ BIGINT空);

在插入前创建触发测试JAVIER.测试2引用新行mynewrow每行开始mynewrow.NUM\序号:= JAVIER.序号1.NEXTVAL公司;结束;

但由于Hana限制,返回一个错误

无法在插入之前执行'CREATE TRIGGER TEST\u 2\u BI'JAVIER.测试2每行引用新行mynewrow…"

SAP DBTech JDBC:[7]:不支持功能:此处不允许序列号:第6行第13列(位置140处)

可以使用中间变量或甚至使用用户函数来获取序列的NEXTVAL:

在插入之前创建触发器测试\u 2 \u BIJAVIER.测试2引用新行mynewrow每行开始声明v bigint;选择JAVIER.序号1.NEXTVAL从dummy进入v;mynewrow.NUM\序号:=:v;结束;

hdbsql SP4=>插入JAVIER.测试2(id)值(1);>去吧1行受影响(总时间18577毫秒;服务器时间7005 usec)

hdbsql SP4=>插入JAVIER.测试2(id)值(2);>去吧1行受影响(总时间10614毫秒;服务器时间1159 usec)

hdbsql SP4=>选择*自JAVIER.测试2>去吧ID,D,编号1,2019-09-16 14:29:07.800000000,12,2019-09-16 14:29:12.337000000,2""""选择2行(总时间73749毫秒;服务器时间228 usec)