2012-03-06 16 views
2

私はMySqlの完全な初心者ですので、優しくしてください。Mysql帰結節相当

OracleのRETURNING句またはMySQLのSQL ServerのInserted'/'Deletedテーブルの同等語句はありますか?私は何をしたい以下の通りです:

  • テーブルB

    に行の削除セットを挿入し、テーブルから

  • を行のセットを削除します。助けてください!

おかげ

+0

トリガーで削除/更新を行いますか? –

+0

@Korhan、トリガーではなく、SP内。私はトリガの中で古い/新しいことを知ることができます。しかし、私はSP内でこれを必要とします – SimpleUser

+0

あなたは**挿入と削除の両方を単一のクエリ@Cpatで行うことはできません。以下の私の答えをチェックしてください... –

答えて

2

残念ながら、あなたは1クエリに挿入や削除の両方を行うことはできませんが、1つのトランザクションでそれをすべて行うことができますトランザクションストアエンジン(InnoDBなど)を使用している場合はです。さらに、RETURNINGはOracleとPostgreSQLでサポートされていますが、MySQLではサポートされていないため、個別のdeleteinsert文を記述する必要があります。

ただし、トランザクションを使用すると、正常にコピーされたデータのみがtableAから削除されることが保証されます。以下を考慮してください:

begin transaction; 
insert into tableB select * from tableA where 'your_condition_here'; 
delete from tableA where 'your_condition_here'; 
commit; 
+0

これも私が探しているものです。私がしたいことをMySqlの同等の句ではありません。ああ、2つの別々の陳述がそれです。あなたの助けをありがとう – SimpleUser

+0

私の答えを確認していただきありがとうございます。私の答えが役に立つとうれしいです。 –

1

はなぜ、テーブルBのテーブルAから削除する行を挿入して、テーブルAから行を削除しませんか?あなたはこのようにそれを達成することができます

insert into tableB select * from tableA where condition; 

、その後

delete from tableA where condition. 
+0

理想的には、私はただ一つのステートメントを実行したいと思います。あなたはSQL Serverで何を行うのと似たようなもの - > table1の出力をdeleted.col1、delete.col2をtable2(col3、col4)に出力する。 – SimpleUser