Откатывайте данные после обновляющейся записи

В этом примере показано, как обновить данные в базе данных и откатывать изменения. Откат изменений восстанавливает данные, как это появляется прежде, чем запустить обновление.

Создайте соединение с базой данных conn. Например, следующий код использует базу данных toy_store, имя пользователя username, пароль pwd, имя сервера sname, и номер порта 123456 соединяться с базой данных Microsoft® SQL Server®. Эта база данных содержит таблицу inventoryTable это содержит эти столбцы: productNumber, Quantity, и Price.

conn = database('toy_store','username','pwd',...
                'Vendor','Microsoft SQL Server',...
                'Server','sname',...
                'PortNumber',123456);

Установите AutoCommit свойство connection возразите против 'off'. Любые обновления, которые вы делаете после выключения этого флага, не соглашаются на базу данных автоматически.

conn.AutoCommit = 'off';

Отобразите данные в inventoryTable таблица прежде, чем сделать обновления. Импортируйте данные от выполняемого запроса с помощью fetch функционируйте и отобразите первые несколько строк импортированных данных.

d = fetch(conn,'SELECT * FROM inventoryTable');
head(d)
ans =

  8×4 table

    productnumber    quantity    price        inventorydate    
    _____________    ________    _____    _____________________

          1            1700      14.5     '2014-09-23 09:38:34'
          2            1200         9     '2014-07-08 22:50:45'
          3             356        17     '2014-05-14 07:14:28'
          4            2580        21     '2013-06-08 14:24:33'
          5            9000         3     '2012-09-14 15:00:25'
          6            4540         8     '2013-12-25 19:45:00'
          7            6034        16     '2014-08-06 08:38:00'
          8            8350         5     '2011-06-18 11:45:35'

Задайте массив ячеек за новую цену первого продукта.

data(1,1) = {30.00};

Задайте WHERE пункт для первого продукта.

whereclause = 'where productNumber = 1';

Обновите Price столбец в inventoryTable для первого продукта.

tablename = 'inventoryTable';
colname = {'Price'};

update(conn,tablename,colname,data,whereclause)

Отобразите данные в inventoryTable таблица после создания обновления.

d = fetch(conn,'SELECT * FROM inventoryTable');
head(d)
ans =

  8×4 table

    productnumber    quantity    price        inventorydate    
    _____________    ________    _____    _____________________

          1            1700        30     '2014-09-23 09:38:34'
          2            1200         9     '2014-07-08 22:50:45'
          3             356        17     '2014-05-14 07:14:28'
          4            2580        21     '2013-06-08 14:24:33'
          5            9000         3     '2012-09-14 15:00:25'
          6            4540         8     '2013-12-25 19:45:00'
          7            6034        16     '2014-08-06 08:38:00'
          8            8350         5     '2011-06-18 11:45:35'

Первый продукт имеет обновленную цену 30. Хотя данные обновляются, изменение не согласилось на базу данных.

Откатывайте обновление.

rollback(conn)

В качестве альтернативы можно откатывать обновление с помощью SQL ROLLBACK оператор при помощи execute функция.

Отобразите данные в inventoryTable таблица после отката обновления.

d = fetch(conn,'SELECT * FROM inventoryTable');
head(d)
ans =

  8×4 table

    productnumber    quantity    price        inventorydate    
    _____________    ________    _____    _____________________

          1            1700      14.5     '2014-09-23 09:38:34'
          2            1200         9     '2014-07-08 22:50:45'
          3             356        17     '2014-05-14 07:14:28'
          4            2580        21     '2013-06-08 14:24:33'
          5            9000         3     '2012-09-14 15:00:25'
          6            4540         8     '2013-12-25 19:45:00'
          7            6034        16     '2014-08-06 08:38:00'
          8            8350         5     '2011-06-18 11:45:35'

Первый продукт имеет старую цену 14.50.

Закройте соединение с базой данных.

close(conn)

Смотрите также

| | | |

Похожие темы

Внешние веб-сайты

Для просмотра документации необходимо авторизоваться на сайте