插入所有默认值

2020-08-26 12:56发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,我正在尝试将SAP Hana数据库支持添加到我的ORM中。 在某些情况下,定义实体/表时将所有列都设置为DEFAULT,并且用户尝试使用指定的任何值将行插入此类表中。 另外,会生成主键,因此也未指定。

其他数据库均支持以下语法:" INSERT INTO" table"(" id"," name")VALUES(DEFAULT,DEFAULT)",均支持以下语法:" INSERT INTO" table" DEFAULT VALUES"。 而且SAP似乎不支持这种语法,因此我在互联网上找不到解决方法。 谢谢。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,我正在尝试将SAP Hana数据库支持添加到我的ORM中。 在某些情况下,定义实体/表时将所有列都设置为DEFAULT,并且用户尝试使用指定的任何值将行插入此类表中。 另外,会生成主键,因此也未指定。

其他数据库均支持以下语法:" INSERT INTO" table"(" id"," name")VALUES(DEFAULT,DEFAULT)",均支持以下语法:" INSERT INTO" table" DEFAULT VALUES"。 而且SAP似乎不支持这种语法,因此我在互联网上找不到解决方法。 谢谢。

付费偷看设置
发送
3条回答
樱桃小丸子0093
1楼 · 2020-08-26 13:48.采纳回答

TL; DR答案:

SAP HANA(最多HANA 2 SP04)不支持DEFAULT/DEFAULT VALUES语法。

在HANA中插入默认值的方法是 忽略应从插入列列表中获取默认值的列。
很明显,表中有一个Identity列,这不会在插入列列表中留下任何列,这反过来又是错误的插入语法。

这有点问题,因为HANA文档指出 HANA符合ANSI SQL功能 F221 "显式默认值" 要求通过将目标列放在插入列表之外(HANA支持的列)或通过您在其他DBMS中看到的DEFAULTS关键字来获取默认值。

我的猜测是这里没有技术障碍,因此也许打开一条支持消息指出该缺点可以将功能添加到待办事项中或提高其优先级。

除此之外,我还有 同意Mike的观点,这是相当荒谬的操作,并且说明它是ORM框架测试套件的结果,

软件心理学工程师
2楼-- · 2020-08-26 13:40

没错,这是一种罕见的用例,例如,如果您想首次使用默认数据创建某些东西,但是以后可以由用户更改,并且 同时,由于它是由特定用户拥有的,因此它应该在数据库中是单独的行。 我个人没有这种用例,但是我正在为所有其他受支持的数据库(postgres,mysql,oracle,sqlite,mssql等)使用ORM中的这种测试用例。 它们都支持VALUES(DEFAULT,DEFAULT)语法,或者支持INSERT INTO表DEFAULT VALUES语法。

我正在为TypeORM添加新的SAP Hana数据库支持( https://github.com/typeorm/typeorm )-最受欢迎的node.js ORM之一。

bbpeas
3楼-- · 2020-08-26 13:44

您好,Umed,

您的问题没有任何意义。 如果字段值已设置为默认值,则无需在插入字段列表或值列表中包括该字段。 而且您也不会插入"身份"字段。 它会根据标识字段的表定义自行填充。 它不能具有默认值,因为它会为每个新记录递增。

麦克,

一周热门 更多>