首页 文章

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

提问于
浏览
1

尝试在表上的PowerApps中使用Patch函数时,我收到SQL INSERT错误,该表的外键依赖于尚未修补的第二个表的主键 .

这是有道理的 . 我怎么能被允许修补一个空白依赖的表?那怎么办呢?

以下是所有5个表的FK / PK依赖关系:

enter image description here

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

  • 在FK列上允许NULL

  • 从FK UPDATE和DELETE中删除了CASCADE

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

2 回答

  • -1

    Patch function将返回更新的(或插入的)对象,其中包含填写的服务器中的任何字段,因此您可以使用它存储并稍后使用它来检索服务器生成的ID . 使用Last大部分时间都可以使用,但如果同时在应用程序中有两个用户,或者表格开始变得太大(并且不是所有的一次都会在本地缓存),则可能会失败 .

    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"
        }
    );
    
  • 2

    刚想出这个:

    您必须按顺序修补这些,以便首先修补PK,然后通过Last()函数抓取并插入(作为FK)到下面的修补程序中 .

    希望这有助于其他人 .

    Example

    //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: " "
            }
        )
    );
    

相关问题