1

異なるデータベース、ServerDBとClientDBのテーブルをマージし、ClientDBに保存しようとしています。ここで、クライアントのテーブルには、マスターのテーブルレコードと、ユーザーが追加する可能性のあるレコードが保持されます。一方、サーバーテーブルも更新できます(新しいレコードが挿入されます)。

データベースには関係があります。INSERT INTO値を挿入したいTableAの列は、自動増分列であるTableBのPrimaryKeyにリンクしているForeignKeyです。

両方のデータベースのすべてのレコードをマージされたデータセットに保存しています。データベースの設計上の制限により、データセットからマージされたテーブルを挿入する前に、クライアントで両方のテーブルをクリアする必要があります。

最初にTableB(PrimaryKey自動インクリメント列を持つもの)を更新しましたが、この列の値はTableAのForeignKeyとは関係がないため、TableAを更新し、ForeignKey列に最初のレコードの値を一時的に挿入しますTableBのPKの。次に、TableAPK列の正しい値でTableAのforeignKey列を更新する必要があります。各テーブルには、同じ値を持つ3番目の列もあります。

SQLステートメントの構文はどうあるべきですか?あまり意味がない場合はお知らせください。より適切な説明を投稿します。

4

2 に答える 2

2

紛らわしい質問でしたが、テーブル1からテーブル2に値を挿入することについて話していると思います。ここで、テーブル1の値はテーブル2の値と等しく、この操作のSQLクエリは次のようになります。

INSERT INTO emp (empno,ename)
SELECT t2.deptno, 
       t2.dname 
FROM   dept t2 
       LEFT JOIN emp t1 
         ON t2.deptno = t1.deptno 

このクエリでは、テーブル1(emp)はテーブル2(dept)の列(empnoとename)に2つの値を挿入し、両方のテーブルに存在する結合がオン(deptno)になります。

これが役に立たなかったかどうかをさらに尋ねることができます。

于 2012-04-28T20:11:34.910 に答える
0

よろしくお願いします。「OledbException操作は更新可能なクエリを使用する必要があります」としばらく苦労した後、私は同様のトピックで解決策を見つけました:MSAccessのSQL更新の問題-操作は更新可能なクエリを使用する必要があります

それがトリックを行ったクエリです:

UPDATE DISTINCTROW PlaylistsSongs
    INNER JOIN PlaylistsNames ON PlaylistNames.PlaylistName = PlaylistsSongs.PlaylistName
SET PlaylistID = PlaylistNames.ID
于 2012-04-29T20:32:01.523 に答える