PostgreSQL - Как конвертировать текущую метку времени в байты - PullRequest
0 голосов
/ 25 февраля 2019

Я перенес базу данных из SQL Server в PostgreSQL.Ряд таблиц содержит столбец ts (timestamp), в котором хранится версия строки и автоматически генерируется на сервере SQL.

Когда я преобразовал хранимые процедуры в PostgreSQL, я обнаружил, что процедуры вставки завершаются сбоем, посколькуСтолбец ts (преобразованный в bytea в PostgreSQL) равен NOT NULL, и в этот столбец не вставляется явное значение.

Теперь мне нужно реализовать то же самое в PostgreSQL.Я предполагаю, что кодирование текущей даты и времени в bytea как-то будет работать правильно.Дайте мне знать, если есть способ реализовать это.

1 Ответ

0 голосов
/ 25 февраля 2019

Для отметки времени timestamp with time zone является лучшим типом данных.

Если вы хотите, чтобы он был заполнен автоматически, установите значение DEFAULT столбца на current_timestamp.

ТамРазве ничто не мешает вам сначала преобразовать метку времени в text, а затем в bytea, но что будет получено таким образом?

Читая о типе данных Microsoft SQL Server timestamp, кажется,все, что вам нужно, - это уникальный идентификатор версии строки, который изменяется при каждом изменении строки.

В PostgreSQL это происходит автоматически в любом случае.Так что вам не нужен специальный столбец, просто используйте комбинацию xmin и ctid.Оба являются системными столбцами.Если любое из этих чисел изменяется, строка была изменена.

...