Tôi bắt đầu một giao dịch, để chèn nhiều bản ghi vào một bảng. Tôi có thể chọn bản ghi được chèn mới nhất trong cơ sở dữ liệu trước khi giao dịch được cam kết không?trong sqlite3, có thể chọn thành công trong giao dịch chèn không?
Trả lời
Có.
Bên trong giao dịch, ứng dụng của bạn sẽ thấy mọi thứ.
Không có giao dịch nào khác, tuy nhiên, thấy bất kỳ phần nào của thay đổi.
Điểm của giao dịch là tạo một chuỗi các câu lệnh có vẻ là một thay đổi nguyên tử đối với cơ sở dữ liệu.
Nếu bạn cam kết, tất cả các tuyên bố trong giao dịch được hoàn tất và mọi người khác có thể thấy các hiệu ứng.
Nếu bạn quay trở lại, không có tuyên bố nào trong giao dịch được hoàn tất và không có thay đổi nào xảy ra với cơ sở dữ liệu.
Không phải tất cả các câu lệnh đều có thể là một phần của giao dịch, BTW. DDL (Tạo và Thả, ví dụ) sẽ kết thúc bất kỳ giao dịch trước đó nào.
Có, trong hoặc sau giao dịch bạn có thể sử dụng hàm last_insert_rowid().
Hàm last_insert_rowid() trả về ROWID của hàng cuối cùng được chèn từ kết nối cơ sở dữ liệu đã gọi hàm.
Nói cách khác:
SQLite version 3.6.23
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table T (C);
sqlite> insert into T values ('hello');
sqlite> select last_insert_rowid();
1
sqlite> BEGIN;
sqlite> insert into T values ('test 2');
sqlite> select last_insert_rowid();
2
sqlite> select rowid,* from T;
1|hello
2|test 2
sqlite> ROLLBACK;
sqlite> select last_insert_rowid();
2
sqlite> select rowid,* from T;
1|hello
sqlite>
- 1. lệnh sqlite3 shell '.backup' và giao dịch
- 2. sqlite3 chọn từ nhiều bảng 'trong đó' công cụ
- 3. Khung thực thể không có Giao dịch?
- 4. Chúng tôi có giao dịch trong MS-Access không?
- 5. Hiểu giao dịch trong khung thực thể
- 6. Chọn tùy chọn nhắc sẽ biến mất khi xác nhận không thành công trong Rails
- 7. Giao dịch kết nối không thành công khi đặt bitmap động trong một tiện ích
- 8. Không thể khôi phục giao dịch trong Zend Framework
- 9. Biên dịch của SQLite3 trong C++
- 10. Trình kích hoạt có được khôi phục nếu giao dịch không thành công trong SQL Server không?
- 11. Cách ly giao dịch trong công cụ ứng dụng google
- 12. Có thể bọc các thay đổi DDL trong một giao dịch trong PostgreSQL không?
- 13. Giao dịch trong giao dịch
- 14. Bạn có thể có nhiều MySqlCommand trong một giao dịch không?
- 15. Giao dịch có bắt đầu ngay cả khi CHỌN không?
- 16. Giao dịch trong một Giao dịch trong C#
- 17. là có một cách để tránh gọi nextval() nếu chèn không thành công trong PostgreSQL?
- 18. Hibernate PostInsertEventListeners -Sử dụng cùng một giao dịch như chèn?
- 19. Oracle Chèn qua Chọn từ nhiều bảng trong đó một bảng có thể không có hàng
- 20. Tự động hoàn thành dây có thể (RopeCodeAssist) trong vim không tự động chèn kết quả?
- 21. lỗi sql không thể bắt đầu một giao dịch trong một giao dịch trong khi thử nghiệm với dưa chuột
- 22. Giao dịch trong Talend
- 23. Không thể thực hiện thao tác vì không có giao dịch hiện tại khi chèn vào cơ sở dữ liệu
- 24. Triển khai Chuẩn bị Cam kết giai đoạn không thành công, Không thể chuẩn bị giao dịch
- 25. Oracle: Chọn ngay lập tức sau khi chèn vào giao dịch tuần tự
- 26. Có sự khác biệt giữa cam kết và rollback trong một giao dịch chỉ có lựa chọn không?
- 27. Công việc giao dịch sẽ có trên nhiều DB trong cùng một máy chủ SQL không? Nếu vậy, đây có phải là giao dịch Phân phối không?
- 28. Quản lý giao dịch thủ công trong DBD :: Pg
- 29. Không có thành phần nào trong DLL có thể được đặt trên hộp công cụ
- 30. Có phải giao dịch ROLLBACK không?