1

次のトランザクションを機能させようとしていますが、SELECT の近くで mysql エラーが発生します。すべての列名が正しいことを再確認しました。

エラーメッセージ

SQL 構文にエラーがあります。'INSERT INTO article (catid,content,title,keywords,isactive) (2 行目の SELEC') の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

SQL

START TRANSACTION; 
INSERT INTO articles (catid,content,title,keywords,isactive) 
(SELECT 1, pendingarticles.content, pendingarticles.title, 
pendingarticles.keywords, 1 
FROM pendingarticles 
WHERE pendingarticles.id=1);
DELETE FROM pendingarticles WHERE id=1; 
COMMIT;

アップデート

コード自体は機能します。INSERT INTO - SELECT 部分と DELETE 部分の両方。トランザクションに問題があります。おそらく;?または、私のデータベースサーバーはトランザクションを実行できませんか?

4

3 に答える 3

2

MyISAM エンジンはトランザクションをサポートしていません。MyIsam エンジンのトランザクション サポート

トランザクションをサポートするには、エンジン fe を InnoDB に変更する必要があります。ストレージ エンジンの設定

于 2013-07-18T15:14:38.223 に答える
0

あなたがしたい:

INSERT INTO articles (catid,content,title,keywords,isactive)  
SELECT 1,pendingarticles.content,pendingarticles.title,  
        pendingarticles.keywords,1  
FROM pendingarticles  
WHERE pendingarticles.id=1;  
DELETE FROM pendingarticles WHERE id=1; 

指定した余分な括弧のセットは必要ありません。

于 2013-07-18T14:10:18.443 に答える
-1

Select を囲む括弧は必要ないと思います。

http://dev.mysql.com/doc/refman/5.6/en/insert.html

START TRANSACTION; 
INSERT INTO articles (catid,content,title,keywords,isactive) 
SELECT 1, pendingarticles.content, pendingarticles.title, 
pendingarticles.keywords, 1 
FROM pendingarticles 
WHERE pendingarticles.id=1;
DELETE FROM pendingarticles WHERE id=1; 
COMMIT; 
于 2013-07-18T14:11:32.330 に答える