У меня есть приложение, в котором в зависимости от типа добавляемой или обновляемой транзакции номер билета может увеличиваться или не увеличиваться. Я не могу использовать тип данных SERIAL для номера билета, потому что он увеличивался бы независимо от типа транзакции, поэтому я определил номер билета как INT. Таким образом, в многопользовательской среде пользователя, если пользователь А при добавлении или обновлении транзакции и пользователь B также делает то же самое, я испытываю для типа Тран и если следующий номер билета требуется, тоSERIAL-like INT column
LET ticket = (SELECT MAX(ticket) [WITH ADDLOCK or UPDLOCK?] FROM transactions) + 1
Однако это должно выполняться точно, когда строка будет совершена или начнутся неприятности. Можете ли вы подумать об этом лучше: Informix, Oracle, MySQL, SQL-Server, 4Js/Genero или другие РСУБД? Это один из основных факторов, который определит, какие RDBMS я собираюсь переписать в свое приложение.
PostgreSQL имеет последовательности, а с 7.x также имеет «SERIAL», который действует как auto_increment MySQL или IDENTITY SQL Server ... –