No, it's not possible as a theoretical matter since, as you say, the order in which rows are returned is arbitrary without an ORDER BY. There is no guarantee that the order will be stable over time.
No, it's not generally possible as a practical matter. However, there may be a couple of workarounds that you could employ.
You could rename the table to <<TABLENAME>>_OLD
, create a view on top of the table named <<TABLENAME>>
, and embed an ORDER BY in that view that returns the data in whatever order you want.
If the view option doesn't work (and it may be problematic if you've got a lot of data) and you're really, really, really in need a hack, you could create a new table, insert FOO (and all other rows that are before the row you want to add), insert the new row, and then insert the remaining rows. Then drop the old table and rename the new table to use the old table name. No guarantees, of course, but that would generally cause an ORDER BY-less SELECT
to return the data in the order you wanted. Terribly ugly if you have a reasonable amount of data in the table.