Nested Sets и PostgreSQL

kvf77

Red Devil
Nested Sets и PostgreSQL

Появилась необходимость перейти на PostgreSQL с MySQL и все функции работы с деревьями перестали работать - не пойму никак почему. Может кто подскажет. И как поправить - а то не въеду никак. В лог у меня записалось вот что:
SQL_QUERY: UPDATE modules SET module_left=IF(module_left>2, module_left+2, module_left), module_right=IF(module_right>=2, module_right+2, module_right) WHERE module_right>=2
SQL_ERROR: ERROR: function if(boolean, bigint, bigint) does not exist
HINT: No function matches the given name and argument types. You may need to add explicit type casts.
Function: UTILS::TreeInsert
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: kvf77
Появилась необходимость перейти на PostgreSQL с MySQL и все функции работы с деревьями перестали работать - не пойму никак почему. Может кто подскажет.
Потому что IF --- функция нестандартная. Стандартная --- CASE, не знаю, впрочем, поддерживает ли её мыскль.


SQL_QUERY: UPDATE modules SET module_left=IF(module_left>2, module_left+2, module_left), module_right=IF(module_right>=2, module_right+2, module_right) WHERE module_right>=2
SQL_ERROR: ERROR: function if(boolean, bigint, bigint) does not exist
HINT: No function matches the given name and argument types. You may need to add explicit type casts.
Function: UTILS::TreeInsert
примерно так:
Код:
... module_left = CASE WHEN module_left > 2 THEN module_left + 2 ELSE module_left END ...
 

tony2001

TeaM PHPClub
Код:
mysql> select case when 1>0 then "vah" else "blah "end;
+------------------------------------------+
| case when 1>0 then "vah" else "blah "end |
+------------------------------------------+
| vah                                      |
+------------------------------------------+
1 row in set (0.00 sec)
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
tony2001
во, тем лучше, вариант с CASE будет везде работать.
 
Сверху