This example shows how a transaction might be specified:
begin transaction royalty_change /* A user sets out to change the royalty split */ /* for the two authors of The Gourmet Microwave. */ /* Since the database would be inconsistent */ /* between the two updates, they must be grouped */ /* into a transaction. */ update titleauthor set royaltyper = 65 from titleauthor, titles where royaltyper = 75 and titleauthor.title_id = titles.title_id and title = "The Gourmet Microwave" update titleauthor set royaltyper = 35 from titleauthor, titles where royaltyper = 25 and titleauthor.title_id = titles.title_id and title = "The Gourmet Microwave" save transaction percent_changed /* After updating the royaltyper entries for */ /* the two authors, the user inserts the */ /* savepoint "percent_changed," and then checks */ /* to see how a 10 percent increase in the */ /* price would affect the authors’ royalty */ /* earnings. */ update titles set price = price * 1.1 where title = "The Gourmet Microwave" select (price * royalty * total_sales) * royaltyper from titles, titleauthor, roysched where title = "The Gourmet Microwave" and titles.title_id = titleauthor.title_id and titles.title_id = roysched.title_id rollback transaction percent_changed /* The transaction rolls back to the savepoint */ /* with the rollback transaction command. */ /* Without a savepoint, it would roll back to */ /* the begin transaction. */ commit transaction