goszowski
@goszowski
PHP Developer

Как создать тригер для дефолтного значения?

Есть таблица (примитивный пример):
CREATE TABLE trs (wallet_id INT, amount DECIMAL(12, 2), hash BYTEA);

Вставляться будут только значения wallet_id и amount:
INSERT INTO trs (wallet_id, amount) VALUES (1, 255);

А hash должен генерироваться автоматичеки функцией sha256 из конкатенированный строки wallet_id + hash.

Я понимаю, что для такого нужно делать триггер before insert, но не знаю как. Прошу помочь.
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
CREATE TABLE trs (
    wallet_id INT, 
    amount DECIMAL(12, 2), 
    hash BYTEA GENERATED ALWAYS AS (sha256((wallet_id + amount) :: TEXT :: BYTEA)) STORED
)

из конкатенированный строки wallet_id + hash

Вообще-то оба поля чисельные - какая в пень конкатенация-то? Но если их надо преобразовать в строку и конкатенировать, то
CREATE TABLE trs (
    wallet_id INT, 
    amount DECIMAL(12, 2), 
    hash BYTEA GENERATED ALWAYS AS (sha256((wallet_id :: TEXT || amount :: TEXT) :: BYTEA)) STORED
)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы