|
|
|
Функция в PG правильно ли сделал?
|
|||
|---|---|---|---|
|
#18+
Доброго дня. Интересует мнение по поводу моей функции. Правильно ли сделана? (она работает) Что и как можно было бы сделать по другому? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Если в таблице нет нужного значения то функция вставляет Insert а если есть обновляет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2014, 15:52:16 |
|
||
|
Функция в PG правильно ли сделал?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 04:51:10 |
|
||
|
Функция в PG правильно ли сделал?
|
|||
|---|---|---|---|
|
#18+
Это моя первая функция на PG. То что есть в справке частично читал, но так как тут новичок я еще не знаю всю гибкость. Поэтому и спрашивал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 09:24:50 |
|
||
|
Функция в PG правильно ли сделал?
|
|||
|---|---|---|---|
|
#18+
ИМНО: Так изящнее:) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. crauseIF $1 IS NOT null Then If $2 IS NOT null A вот так делать не надо, это делается в определении таблицы create table cup_ntd (id_name integer NOT NULL, id_detail integer NOT NULL ,......) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 10:07:12 |
|
||
|
Функция в PG правильно ли сделал?
|
|||
|---|---|---|---|
|
#18+
fteТак изящнее:) Я так понимаю $$ - заменят '' if (FOUND) Then - положительно только для операции сделанной выше т.е. UPDATE... Между THEN и ELSE а также ELSE и END можно писать сколько угодно кода, и это будет считаться одним блоком!!! Верно утверждение? А могут ли в этом коде быть костыли какие-то? Огромное спасибо за подсказку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 10:38:09 |
|
||
|
Функция в PG правильно ли сделал?
|
|||
|---|---|---|---|
|
#18+
crause, Добрый день. crauseЕсли в таблице нет нужного значения то функция вставляет Insert а если есть обновляет. В других СУБД эта функция называется Merge. Ее можно и на PostgreSQL написать через CTE. Ссылка на пример http://www.biwed.ru/index.php/dobryaki/16-sql/36-obnovlenie-zapisej-tablicy-izmerenij-pri-pomoshhi-cte С уважением, biwed.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 11:33:00 |
|
||
|
Функция в PG правильно ли сделал?
|
|||
|---|---|---|---|
|
#18+
crause$$ - заменят '' Да crauseif (FOUND) Then - положительно только для операции сделанной выше т.е. UPDATE... Нет - положительно, когда обновится хотя бы одна запись crauseМежду THEN и ELSE а также ELSE и END можно писать сколько угодно кода, и это будет считаться одним блоком!!! Верно утверждение? Вам же дали ссылку, изучайте... там достаточно информации что-бы ответить на Ваш вопрос... 2+2 = 4 crauseА могут ли в этом коде быть костыли какие-то? А что есть КОСТЫЛЬ ????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 13:17:35 |
|
||
|
Функция в PG правильно ли сделал?
|
|||
|---|---|---|---|
|
#18+
fte, в вашем коде "костыль" (возможная проблема и т.д.) это например ситуация, когда между update и insert какая-нибудь другая транзакция сделает insert для таких же (id_name, id_detail). В результате у вас либо получится две разные записи в таблице, либо exception, если по этим двум столбцам стоит констрейн на уникальность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 11:34:30 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=129&tid=1998717]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
312ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 281ms |
| total: | 671ms |

| 0 / 0 |
