PowerApps:如何使用外键修补多个 SQL 表?

PowerApps: How to Patch multiple SQL tables with foreign keys?

我尝试在 table 上使用 PowerApps 中的 Patch 函数时出现 SQL INSERT 错误,该 table 的外键依赖于第二个 [=32= 的主键] 尚未修补。

这是有道理的。我怎么能允许 Patch a table 有一个空白的依赖项?那么如何才能做到呢?

以下是所有 5 个 table 的 FK/PK 依赖项:

到目前为止我已经尝试过:

还有什么想法吗?我特别需要示例函数。 谢谢

刚想出这个:

您必须按顺序修补这些 PK,以便首先修补 PK,然后通过 Last() 函数获取并插入(作为 FK)到后续补丁中。

希望这对其他人有所帮助。

示例

//Patch values into dateTable

Patch('[dbo].[dateTable]',
    Defaults('[dbo].[dateTable]'),
        {
            siteId: varSiteID,
            readingDate: Now()
        }
);

//Patch values into readingTable

Patch('[dbo].[readingTable]',
    Defaults(
        '[dbo].[readingTable]'),
        {
            dateId: Last('[dbo].[dateTable]').dateId, <--BINGO
            unitNum: 1, 
            xzyName: 1,
            zyxNum: 1,
            xkdFactor: 1, 
            supplyXya: 1, 
            supplyUio: 1, 
            sortNum: 1,
            currentUys: 1,
            avgJJk: 1,
            prevLLk: 1,
            readingNotes: "This is awesome"
        }
);

//Patch values into the imageTable

ForAll(
    colImageGallery,
    Patch(
        '[dbo].[imageTable]',
            Defaults('[dbo].[imageTable]'),
        {
            readingId: Last('[dbo].[readingTable]').readingId, <--BINGO
            photo: image,
            photoNotes: " "
        }
    )
);

Patch function will return the updated (or inserted) object with any fields from the server filled out, so you can use store it and use later to retrieve the server-generated id. Using Last 大部分时间都可以使用,但如果您同时有两个用户在应用程序中,或者如果 table 开始变得太大(而不是所有这些都会立即缓存在本地。

Set(
    patchResult,
    Patch(
        '[dbo].[dateTable]',
        Defaults('[dbo].[dateTable]'),
        {
            siteId: varSiteID,
            readingDate: Now()
        }));

//Patch values into readingTable

Patch(
    '[dbo].[readingTable]',
    Defaults('[dbo].[readingTable]'),
    {
        dateId: patchResult.dateId,
        unitNum: 1, 
        xzyName: 1,
        avgJJk: 1,
        prevLLk: 1,
        readingNotes: "This is awesome"
    }
);