我有一个Azure逻辑应用程序,可连接到Azure中的SQL Server数据库。该表具有一个uniqueidentifier
列作为主键。在逻辑应用程序中,删除或更新需要rowid
才能执行更新,主键在这里不起作用,并且在运行时引发错误,指出该表没有主键。确实如此,并且在知道主键约束的逻辑应用程序中两次插入一行时被确认(唯一)。
如果我Get Rows
并按主键列进行过滤,则结果数组将列出找到的每一项(显然是该项),但不会将rowid用作动态表达式。
如何实际获得rowid?是否可以仅使用主键来更新行?
更新:
uuid
在逻辑应用程序外部生成,并作为字符串传递给它。
应该注意的是,插入就可以了。
此处,LogicalApp需要一个rowid指定符,但使用uuid
失败。我以为可以解决此问题,而是改为通过uuid过滤所有行并更新它们,但是我无法获取rowid
。另一个人有类似的问题(https://stackoverflow.com/a/43516709/1298523),如果不编辑源代码就无法获得rowid
;但是,由于结果为空,因此在代码的主体部分添加rowid的方法似乎不再起作用。
使用uuid时,在
update
或delete
期间收到的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
已放入桌子。
答案 0 :(得分:0)
如果主键上具有默认列(如NEWID()),则将其删除。
直接在逻辑应用程序中生成uniqueidentifier,然后将其像其他任何列一样插入Azure SQL DB的表中。如果这样做,则已经具有GUID值,以后可以在同一应用程序代码中使用它。
如果这不是问题,我认为您需要给我们一些代码来阅读,以便我们提供更多帮助。
答案 1 :(得分:0)
我发现了这一点,实际上我删除了整个logicapp并对其进行了重建,现在它认识到uuid列是PK。我相信,当应用程序首次连接到SQL时,它会存储架构,以后再也不会更新。我已经重建了几次连接,但是唯一要更新的是通过重建逻辑应用程序本身。我有点相信这是一个错误,所以我离开这里作为答案,以防将来有人遇到这个问题
答案 2 :(得分:0)
您可以按“刷新”(在编辑逻辑应用程序时紧接在“编辑”按钮旁边),而不是从头开始重建逻辑应用程序。为我工作