NẾU BẠN ĐANG SỬ DỤNG INNODB:
Nếu bạn đang sử dụng INNODB, vì bạn đã xác minh hàng đã được chèn, nên nó phải được quay lại với CHỌN, miễn là CHỌN đang truy vấn khóa của hàng thực đã được chèn. (Bạn có chắc mình không sử dụng một tính năng như CHÈN BỊ TRÌ HOÃN không? Điều đó có thể ngăn việc trả lại hàng.)
NẾU BẠN ĐANG SỬ DỤNG MYISAM:
Vì MyISAM không hỗ trợ các giao dịch, nên SELECT sẽ trả về chèn, nhưng tôi không thể tìm thấy bất kỳ điều gì cho biết điều này thực sự được đảm bảo.
LƯU Ý:URL đầu tiên được liệt kê bên dưới cho biết nếu bạn đang sử dụng MYISAM (mặc định theo liên kết này), INSERTS sẽ khóa bảng. Tuy nhiên, URL thứ hai cho biết rằng khóa được đặt bởi một phần chèn là một khóa có thể đọc được, vì vậy điều đó không nên ngăn bảng được đọc.
http://www.sitepoint.com/mysql-mistakes-php-developers/
http://aarklondatabasetrivia .blogspot.com / 2009/04 / how-to-lock-and-unlock -boards-in-mysql.html
NẾU BẠN ĐANG SỬ DỤNG INNODB (TIẾP TỤC):
- Nếu AUTOCOMMIT đang được sử dụng trong hệ thống của bạn (tôi không chắc), bạn nên chọn hàng đã chọn (câu hỏi này cho biết hàng được chèn đã được xác minh là đã được thêm vào cơ sở dữ liệu).
- Nếu một giao dịch đang được sử dụng, giao dịch đó phải được cam kết (câu hỏi này cho biết hàng được chèn đã được xác minh là đã được thêm vào cơ sở dữ liệu).
Bạn có chắc chắn truy vấn SELECT được thực thi lần đầu tiên giống với truy vấn lần thứ hai không?
Bạn có chắc chắn không $user['social_id']
Giá trị sau CHÈN VÀ tại thời điểm CHỌN có giống nhau không?
- Nếu bạn đang tham chiếu đến một hàng được chèn trong một giao dịch khác, thay vì trong phiên đang thực hiện việc chèn, thì URL này:
http:// blog. innodb.com/wp/2011/04/get-started-with-innodb-memcached-daemon-plugin/
cho biết "bạn sẽ cần thực hiện chọn" đọc không cam kết "để tìm các hàng vừa được chèn:"
I E. đặt phiên giao dịch GIAO DỊCH ISOLATION LEVEL được đọc không cam kết;
http://dev.mysql.com/doc/refman /5.0/en/set-transaction.html
(Tính năng này có thể phụ thuộc vào phiên bản MYSQL đang sử dụng)
- Nếu vì lý do nào đó, bạn đang sử dụng CHÈN BỊ TRÌ HOÃN, hàng có thể không được trả lại
LƯU Ý:Theo URL này, NẾU bạn đã bắt đầu một giao dịch, các hàng đã chọn sẽ hiển thị trong câu lệnh SELECT tiếp theo (không phải trong PHP):
http://zetcode.com/databases/mysqltutorial/transactions/
Tuyên bố này ngụ ý rằng nếu bạn bắt đầu một giao dịch, bạn không cần thiết lập AUTOCOMMIT:
"MySQL cũng tự động cam kết các câu lệnh không phải là một phần của giao dịch."
URL này mô tả cách bắt đầu một giao dịch bằng PHP:
Ví dụ về giao dịch PHP + MySQL