
SQLite3::lastInsertRowID 메서드를 사용하기 전에, 데이터베이스를 커밋해야 하는 이유는 데이터베이스의 변경 사항이 저장되지 않았기 때문입니다.
커밋하지 않은 데이터베이스의 변경 사항은 임시적으로 저장되며, 마지막 레코드 ID를 확인할 수 없습니다.
커밋하지 않은 데이터베이스의 변경 사항을 확인하려면, 데이터베이스를 커밋하거나 롤백해야 합니다.
커밋하지 않은 데이터베이스의 변경 사항을 확인하는 예제는 다음과 같습니다.
ruby
require 'sqlite3'
db = SQLite3::Database.new('example.db')
db.execute('CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)')
db.execute('INSERT INTO users (name) VALUES (?)', 'John')
# 커밋하지 않은 데이터베이스의 변경 사항을 확인할 수 없습니다.
puts db.last_insert_row_id # nil
# 데이터베이스를 커밋합니다.
db.commit
# 커밋한 데이터베이스의 변경 사항을 확인할 수 있습니다.
puts db.last_insert_row_id # 1
커밋하지 않은 데이터베이스의 변경 사항을 롤백하는 예제는 다음과 같습니다.
ruby
require 'sqlite3'
db = SQLite3::Database.new('example.db')
db.execute('CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)')
db.execute('INSERT INTO users (name) VALUES (?)', 'John')
# 커밋하지 않은 데이터베이스의 변경 사항을 확인할 수 없습니다.
puts db.last_insert_row_id # nil
# 데이터베이스를 롤백합니다.
db.rollback
# 롤백한 데이터베이스의 변경 사항을 확인할 수 없습니다.
puts db.last_insert_row_id # nil
따라서, 마지막 레코드 ID를 확인하기 전에, 데이터베이스를 커밋해야 합니다.
2025-04-18 17:09