
SQLite3::changes 메서드는 데이터베이스의 변경 사항을 확인하는 데 사용됩니다. 그러나, 데이터베이스에 레코드를 삽입한 후에 `db.changes`가 0을 출력하는 이유는 다음과 같습니다.
`db.execute` 메서드는 SQL 명령을 데이터베이스에 실행하는 메서드입니다. 이 메서드는 SQL 명령이 성공적으로 실행되면 `true`를 반환하고, 실패하면 `nil`을 반환합니다. 하지만, 이 메서드는 변경 사항을 반환하지는 않습니다.
`db.changes` 메서드는 데이터베이스의 변경 사항을 확인하는 데 사용됩니다. 그러나, 이 메서드는 데이터베이스의 변경 사항을 반환하기 전에, 데이터베이스의 커밋을 기다립니다. 커밋은 데이터베이스의 변경 사항을 저장하는 것을 의미합니다. 만약, 커밋이 수행되지 않은 경우, `db.changes` 메서드는 이전 커밋 시점의 변경 사항을 반환합니다.
따라서, 위 코드에서 `db.changes`가 0을 출력하는 이유는 커밋이 수행되지 않았기 때문입니다. 커밋을 수행하려면 `db.commit` 메서드를 사용해야 합니다.
#hostingforum.kr
ruby
db = SQLite3::Database.new('example.db')
db.execute('CREATE TABLE users (name TEXT, age INTEGER)')
db.execute('INSERT INTO users (name, age) VALUES ("John", 30)')
db.commit # 커밋을 수행합니다.
puts db.changes # 변경 사항이 저장된 후에 변경 사항을 확인합니다.
이러한 방법으로, 데이터베이스의 변경 사항을 확인할 수 있습니다.
2025-06-13 10:43