Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Условные обновления

Трехсторонние внешние соединения | Рекурсивные внешние соединения | Перекрестные соединения | Естественные соединения | Что такое условная логика? | Выражение case | Простые выражения case | Gt; FROM account | Селективная агрегация | Проверка существования |


Читайте также:
  1. Безусловные рефлексы.
  2. Виды естественного возобновления, недостатки и преимущества семенного и вегетативного возобновления леса.
  3. Группы условно делят на большие и малые, условные и реальные, лабораторные и естественные.
  4. Интенсивного обновления кожи
  5. К закономерностям обновления и развития социальной сферы можно отнести.
  6. Какова скорость обновления фосфора в тканях зуба (дентин, эмаль) по сравнению с трубчатыми костями.
  7. Непрерывное обучение в соответствии с потребностями обновления знаний

 

При обновлении строк таблицы вам иногда придется принимать реше_ ния относительно того, какие значения должны быть заданы в опреде_ ленных столбцах. Например, после вставки новой транзакции долж_ ны измениться столбцы avail_balance, pending_balance и last_activi_ ty_date таблицы account. С обновлением двух последних столбцов про_ блем нет, но чтобы правильно изменить столбец avail_balance, надо проверить столбец funds_avail_date таблицы transaction и выяснить, сразу ли доступны фонды транзакции. Допустим, только что вставле_ на транзакция с ID 999, тогда изменить три столбца таблицы account можно с помощью следующего выражения update:

 

1 UPDATE account

 

2 SET last_activity_date = CURRENT_TIMESTAMP(), 3 pending_balance = pending_balance +

 

4 (SELECT t.amount *

5 CASE t.txn_type_cd WHEN 'DBT' THEN _1 ELSE 1 END

 

6 FROM transaction t

 

7 WHERE t.txn_id = 999),

 

8 avail_balance = avail_balance +

 

9 (SELECT

 

10 CASE

 

11 WHEN t.funds_avail_date > CURRENT_TIMESTAMP() THEN 0

 

12 ELSE t.amount *

13 CASE t.txn_type_cd WHEN 'DBT' THEN _1 ELSE 1 END

 

14 END

 

15 FROM transaction t

 

16 WHERE t.txn_id = 999)


 

228 Глава 11. Условная логика

17 WHERE account.account_id =

 

18 (SELECT t.account_id

 

19 FROM transaction t

 

20 WHERE t.txn_id = 999);

 

Здесь всего три выражения case: два из них (строки 5 и 13) служат для изменения знака суммы транзакции для дебетовых транзакций, а третье выражение case (строка 10) предназначено для проверки даты доступности фондов. Если эта дата еще не наступила, к доступному ос_ татку добавляется нуль; в противном случае добавляется сумма тран_ закции.

 


Дата добавления: 2015-08-17; просмотров: 32 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Ошибки деления на нуль| Обработка значений Null

mybiblioteka.su - 2015-2024 год. (0.005 сек.)