anchor.diff:      text varchar(255)
   )
   ```
  -This code inserts two rows into the *note* table and returns the two generated keys:
  +This code inserts two rows into the _note_ table and returns the two generated keys:
   
   ```java
   Flowable<Integer> keys = 
  
positive.code: [![codecov](https://codecov.io/gh/davidmoten/rxjava2-jdbc/branch/master/graph/badge.svg)](https://codecov.io/gh/davidmoten/rxjava2-jdbc)
  <!--[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.davidmoten/rxjava2-jdbc/badge.svg?style=flat)](https://maven-badges.herokuapp.com/maven-central/com.github.davidmoten/rxjava2-jdbc)<br/>-->
  
  JDBC is so much simpler with *rxjava2-jdbc*.
  
  Status: *release candidates on Maven Central*
  
  Maven site reports are [here](http://davidmoten.github.io/rxjava2-jdbc/index.html) including [javadoc](http://davidmoten.github.io/rxjava2-jdbc/apidocs/index.html).
  
  
negative.code: == Transactions
  Transactions are a critical feature of relational databases. 
  
  When we're talking RxJava we need to consider the behaviour of individual JDBC objects when called by different threads, possibly concurrently. The approach taken by _rxjava2-jdbc_ outside of a transaction safely uses Connection pools (in a non-blocking way). Inside a transaction we must make all calls to the database using the same Connection object so the behaviour of that Connection when called from different threads is important. Some JDBC drivers provide thread-safety on JDBC objects by synchronizing every call.
  
  The safest approach with transactions is to perform all db interaction synchronously. Asynchronous processing within transactions was problematic in _rxjava-jdbc_ because `ThreadLocal` was used to hold the Connection. Asynchronous processing with transactions _is_ possible with _rxjava2-jdbc_ but should be handled with care given that your JDBC driver may block or indeed suffer from race conditions that most users don't encounter.
  
  Let's look at some examples. The first example uses a transaction across two select statement calls:
  
  