2014-11-03 7 views
0

Я работаю над приложением Spring-MVC, где я использую базу данных PostgreSQL с спящим режимом. Я понимаю, что Hibernate имеет свой собственный триггер, но использование их связано с большими накладными расходами. По этой причине я хотел бы использовать триггер PostgreSQL.Использование триггера для сортировки в PostgreSQL

Посмотрите на модель данных, вставленную ниже.

Вопрос: Что делать? Ответ: После обновления базы данных (операции CRUD) существует целочисленный столбец (блокнот), который определяет порядок данных. Я хотел бы сбросить его и начать с 1 и увеличивать до конца строки.

Существует поймать слишком: :-( Могу ли я передать параметры, как сделать использование триггеров при определенных условиях, таких как sectionid или canvasid выполняется

ли это возможно, или я должен Hibernate спусковые Пожалуйста, дайте мне?. знать, какие-либо идеи, ссылка будет хорошо Если какой-либо вопрос, пожалуйста, оставьте комментарий Спасибо

Ниже данные модель:...

CREATE TABLE note 
(
    noteid integer NOT NULL, 
    sectionid integer, 
    canvasid integer, 
    text character varying, 
    notecolor character varying, 
    noteheadline character varying, 
    id integer NOT NULL, 
    canvasname character varying, 
    noteorder integer, 
    CONSTRAINT noteid PRIMARY KEY (noteid), 
    CONSTRAINT user_note_fk FOREIGN KEY (id) 
     REFERENCES person (id) MATCH SIMPLE 
     ON UPDATE NO ACTION ON DELETE NO ACTION 
); 

ответ

1

Вы можете выполнить запрос обновления с помощью row_number окна весело ction

UPDATE note set note.noteorder = subquery.rn 
FROM 
(
    SELECT id,row_number() over() AS rn 
    FROM note 
) subquery 
WHERE note.id = subquery.id; 

Вы можете использовать триггер, но вы не можете передавать какие-либо аргументы. От docs:

Функция триггера должна быть объявлена ​​как функция не беря аргументов и возвращает триггер типа. (Функция триггера принимает свой вход через специально пройденную структуру TriggerData, а не в виде обычных аргументов функции.)

+0

Благодаря. Думаю, тогда я не могу использовать его, так как мне нужно передать 2 параметра при любых условиях. Спасибо за ваш ответ, я думаю, что я буду рассматривать спящий режим для некоторых решений. –

+0

@Orici без проблем –

+0

@a_horse_with_no_name спасибо! –

Смежные вопросы