В этом примере показано, как обновить данные в базе данных и откатить изменения. При откате изменений данные восстанавливаются в том виде, в каком они появляются перед запуском обновления.
Создание подключения к базе данных 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)
close | database | execute | fetch | rollback