I was looking at http://www.sqlite.org/lang_insert.html for details on the 'INSERT' statement. In the text, it says: "The optional conflict-clause allows the specification of an alternative constraint conflict resolution algorithm to use during this one INSERT command. See the section titled ON CONFLICT for additional information."
I puzzled over that text for awhile because there is no obvious conflict option shown in the railroad syntax chart. Although I was able to sort this out, after going to the linked page regarding "ON CONFLICT", I would like to propose a much clearer way to document that option for the INSERT statement. The railroad chart would have the whole set of INSERT paths replaced with this: INSERT --------------------------------- \-- OR --\ / |\-- REPLACE ----/| |\-- ROLLBACK ---/| |\-- ABORT ------/| |\-- FAIL -------/| \-- IGNORE -----/ (Best viewed with a monospaced font.) The lead sentence referring to the confict resolution options would read: "The optional, 'OR'-prefixed conflict-clause allows the specification of an alternative constraint conflict resolution algorithm to use during this one INSERT command." Lest this be perceived as nit-picking, I justify it thusly: The SQLite syntax documentation has been so clear and useful to me that my puzzling experience with this issue really stood out. (For awhile, I thought it was a plain doc bug, until I went to a separate page to relearn how the 'OR' syntax variant works.) The other is that the railroad diagram structure does not clearly indicate the optionality except by recognizing the duplication of the 'INSERT' keyword. (I'll admit to stupidity for not seeing it sooner.) -- Larry Brasfield