sql >> データベース >  >> RDS >> Mysql

挿入した行を次々に挿入して選択することはできますか?

    INNODBを使用している場合:

    INNODBを使用している場合、行が挿入されたことを確認したので、SELECTが挿入された実際の行のキーを照会している限り、SELECTで返されるはずです。 (INSERT DELAYEDなどの機能を使用していないことを確認しますか?これにより、行が返されなくなる可能性があります。)

    MYISAMを使用している場合:

    MyISAMはトランザクションをサポートしていないため、SELECTは挿入を返す必要がありますが、これが実際に保証されていることを示すものは見つかりません。

    注:以下にリストされている最初のURLは、MYISAM(このリンクによるデフォルト)を使用している場合、INSERTSがテーブルをロックすることを示しています。ただし、2番目のURLは、挿入によって配置されたロックが読み取り可能なロックであることを示しているため、テーブルの読み取りが妨げられることはありませんでした。

    http://www.sitepoint.com/mysql-mistakes-php-developers/

    http:// aarklondatabasetrivia .blogspot.com / 2009/04 / how-to-lock-and-unlock-tables-in-mysql.html

    INNODBを使用している場合(続き):

      システムでAUTOCOMMITが使用されている場合(よくわかりません)、選択した行が表示されているはずです(この質問では、挿入された行がデータベースに追加されたことが確認されました)。

      トランザクションが使用中の場合、トランザクションはコミットされている必要があります(この質問では、挿入された行がデータベースに追加されたことが確認されたと述べています)。

      最初に実行されるSELECTクエリは、2回目のクエリと同じですか?

      よろしいですか$user['social_id'] INSERT後とSELECT時の値は同じですか?

      何らかの理由でINSERTDELAYEDを使用している場合、行が返されない可能性があります

    注:このURLによると、トランザクションを開始した場合、選択された行は次のSELECTステートメントに表示されます(PHPではありません):

    http://zetcode.com/databases/mysqltutorial/transactions/

    このステートメントは、トランザクションを開始する場合、AUTOCOMMITを設定する必要がないことを意味します:

    「MySQLは、トランザクションの一部ではないステートメントも自動的にコミットします。」

    このURLは、PHPでトランザクションを開始する方法を説明しています:

    PHP+MySQLトランザクションの例




    1. MySQLテーブル->同じクエリで同じ行を複数回返すことができますか?

    2. mysql SELECTで日付形式を変更する最良の方法は?

    3. MySQLで数値をフォーマットする方法

    4. MySQLのローリングアップグレードを実行する方法