1

私の問題は、一括挿入+更新に関するものです。

大量のデータを挿入し、同時に主キーではなく特定の列で同じデータを更新したい。だから使えないINSERT...ON DUPLICATE KEY UPDATE

それを行う方法はありますか?

たとえば、「person」テーブルがあり、「name」-「phone」-「security-number」列があります。最初の一括挿入では、新しい人を追加しますが、同じ名前の新しいレコードは必要ありません。他の情報 (電話番号とセキュリティ番号) を更新するだけです 別の挿入操作で、新しい人を追加しますが、同じ電話番号を持つ新しいレコードは、名前とセキュリティ番号を更新するだけです。(例は少しばかげているかもしれません、申し訳ありません)

4

2 に答える 2

1

これが唯一の解決策ではないかもしれませんが、これが最初に頭に浮かんだことです。トリガーを作成し、一括挿入するたびに動的に作成し(コードからSQLを実行します)、挿入後に削除するため、次回は別の列を確認できます。擬似コード:

CREATE TRIGGER ON INSERT
BEGIN
    DECLARE t int;
    SELECT t = COUNT(1) FROM table WHERE your_defined_column = inserted.your_defined_column
    IF(t > 0)
    BEGIN
        UPDATE table SET all_columns... WHERE your_defined_column = inserted.your_defined_column
        --STOP FROM INSERTING
    END
    ELSE
        --LET IT INSERT
    END
END

お役に立てれば :)

于 2013-08-22T08:45:14.837 に答える