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