【问题标题】:Azure LogicApp cannot get rowid from SQL ServerAzure LogicApp 无法从 SQL Server 获取 rowid
【发布时间】:2019-10-30 22:04:46
【问题描述】:

我有一个 Azure 逻辑应用程序,它连接到 Azure 中的 SQL Server 数据库。该表有一个uniqueidentifier 列作为主键。在逻辑应用中,删除或更新需要rowid 才能执行更新,主键在此处不起作用并在运行时引发错误,说明表没有主键。它确实如此,并且在它知道主键约束的逻辑应用程序中插入一行两次时另外确认,它是唯一的。

如果我Get Rows 并按主键列过滤,则结果数组会列出找到的每个项目(显然是那个),但不会将 rowid 作为动态表达式提供。

如何真正获得rowid?是否可以仅使用主键更新行?

更新:

uuid 在 logicapp 之外生成,并作为字符串传递给它。 需要注意的是,插入效果很好。

这里的 logicapp 需要一个 rowid 说明符,但使用 uuid 失败。我想我可以改为通过 uuid 过滤所有行并更新它们,作为一种解决方法,但我无法获得rowid。另一个人有类似的问题(https://stackoverflow.com/a/43516709/1298523),如果不编辑源代码就无法获得rowid;但是,这种在代码正文部分添加 rowid 的方法似乎不再有效,因为结果为空。 我在使用 uuid 时在 updatedelete 期间收到的 logicapp 错误是:

{ "status": 400, "message": "Execution Failure\r\n inner exception: The specified table has no primary key. Update and delete operations are not supported.\r\nclientRequestId: 555", "source": "sql-555.p.azurewebsites.net" }

话虽如此,insert 很好,uuid I pass get 被放入表中。

插入结果:

【问题讨论】:

  • 将默认值 newid() 放在 uniqueidentifier 列上。
  • 请贴出代码和错误信息。你的解释不够具体。
  • @Nick.McDermaid 我更新了我的问题,希望它更具体,谢谢

标签: sql sql-server azure azure-sql-database azure-logic-apps


【解决方案1】:

我想通了,我实际上删除了整个 logicapp 并重建了它,现在它认识到 uuid 列是一个 PK。我相信当应用程序第一次连接到 SQL 时,它会存储架构并且之后永远不会更新。我已经重建了几次连接,但唯一让它更新的是重建逻辑应用程序本身。我有点相信这是一个错误,所以我留下来作为答案,以防将来有人遇到这个问题

【讨论】:

  • 您可以接受它作为答案。这对其他社区成员可能是有益的。谢谢。
  • 感谢您的提醒。我过去肯定经历过这种情况,并且重新阅读它帮助我解决了我的问题......是的,只需从新架构的新小部件开始。
  • 我不必删除整个 Logic App,只需删除 Action,保存 Logic App,重新添加即可。这让我发疯了!
【解决方案2】:

如果您在主键上有一个默认列(如 NEWID()),请将其删除。

直接在逻辑应用中生成唯一标识符,然后像任何其他列一样将其插入到 Azure SQL DB 的表中。如果这样做,则您已经拥有 GUID 值,以后可以在同一应用代码中使用该值。

如果这不是问题,我认为您需要给我们一些代码以供阅读,以便我们提供更多帮助。

【讨论】:

  • 我更新了我的问题,使其更加详细。我在 logicapp 之外生成 uuid 并且插入工作正常。使用相同的uuid时,似乎是更新或删除不起作用
【解决方案3】:

您可以按“刷新”(在要编辑逻辑应用时位于“编辑”按钮旁边),而不是从头开始重新构建逻辑应用。为我工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多