「ダンプ」テーブルからライブ テーブルに存在しない新しいレコードのみを挿入しています。私の問題は、ライブに挿入したくない ID 列があることです。ライブ テーブルの ID 列で値の増分を処理したいのですが、挿入エラー「挿入エラー: 列名または数指定された値がテーブル定義と一致しません。」これを回避する方法はありますか、それとも ID 列をまとめて削除する唯一の修正ですか?
ありがとう、サム
「ダンプ」テーブルからライブ テーブルに存在しない新しいレコードのみを挿入しています。私の問題は、ライブに挿入したくない ID 列があることです。ライブ テーブルの ID 列で値の増分を処理したいのですが、挿入エラー「挿入エラー: 列名または数指定された値がテーブル定義と一致しません。」これを回避する方法はありますか、それとも ID 列をまとめて削除する唯一の修正ですか?
ありがとう、サム
私は問題を理解しました....私のライブテーブルには ID フィールドが ID として設定されていませんでした。どういうわけか、それを作成したときに、そのフィールドが正しく設定されていませんでした。
ID 列を除いて、クエリに必要なすべての列をリストする必要があります。
を絶対に使用してはならないもう 1 つの理由SELECT *
。
INSERT liveTable
(col1, col2, col3)
SELECT col1, col2, col3
FROM dumpTable dt
WHERE NOT EXISTS
(
SELECT 1
FROM liveTable lt
WHERE lt.Id == dt.Id
)
プロのヒント:OUTER JOIN
ダンプ テーブルとライブ テーブルの間でを使用して上記を実現することもできWHERE liveTable.col1 = NULL
ます (おそらく、ダンプ テーブル エイリアスで選択した列名を修飾する必要があります)。
このように挿入ステートメントにその列を残すことができます
insert into destination (col2, col3, col4)
select col2, col3 col4 from source
ただしないでください
insert into destination
select * from source