Mysql
 sql >> база данни >  >> RDS >> Mysql

Възможно ли е да се INSERT и след това SELECT вмъкнат ред един след друг?

АКО ИЗПОЛЗВАТЕ INNODB:

Ако използвате INNODB, тъй като сте потвърдили, че редът е вмъкнат, той трябваше да бъде върнат с SELECT, стига SELECT да е запитвал ключа на действителния ред, който е бил вмъкнат. (Сигурни ли сте, че не използвате функция като INSERT DELAYED? Това може да попречи на връщането на реда.)

АКО ИЗПОЛЗВАТЕ MYISAM:

Тъй като MyISAM не поддържа транзакции, SELECT трябва да върне вмъкването, но не мога да намеря нищо, което гласи, че това всъщност е гарантирано.

ЗАБЕЛЕЖКА:Първият URL адрес, изброен по-долу, посочва дали използвате MYISAM (по подразбиране според тази връзка), INSERTS ще заключи таблицата. Въпреки това, вторият 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, която се изпълнява първия път, е същата като тази втория път?

    Сигурни ли сте, че $user['social_id'] е същата стойност след INSERT и по време на SELECT?

    Ако имате предвид ред, вмъкнат в друга транзакция, вместо в сесията, която извършва вмъкването, тогава този URL адрес:

    http://blogs. innodb.com/wp/2011/04/get-started-with-innodb-memcached-daemon-plugin/

    заявява "ще трябва да изберете "read uncommitted", за да намерите току-що вмъкнатите редове:"

    I.E. задаване на сесия НИВО НА ИЗОЛАЦИЯ НА ТРАНЗАКЦИЯ четене без ангажимент;

    http://dev.mysql.com/doc/refman /5.0/bg/set-transaction.html

    (Тази функция може да зависи от използваната версия на MYSQL)

    Ако по някаква причина използвате INSERT DELAYED, редът може да не бъде върнат

БЕЛЕЖКИ:Съгласно този URL адрес, АКО сте стартирали транзакция, избраните редове се показват в следващия оператор SELECT (не в PHP):

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

Това изявление предполага, че ако започнете транзакция, не е необходимо да задавате AUTOCOMMIT:

"MySQL също така автоматично записва изрази, които не са част от транзакция."

Този URL адрес описва как да стартирате транзакция в PHP:

Примери за PHP + MySQL транзакции




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Може ли таблица на база данни да бъде без първичен ключ?

  2. Добавете колона с номериран списък към върната MySQL заявка

  3. Преглед на PDF файлове, съхранени в MySQL база данни, с помощта на PHP грешка

  4. Активирайте поддръжката на MySQL InnoDB Storage Engine в инсталацията на XAMPP

  5. Как да избера фиксиран брой редове за всяка група?