SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.10.2011 21:55:46

vinslave
Участник
MySQL Authorized Developer
Зарегистрирован: 16.10.2011
Сообщений: 15

вставляемые и обновляемые представления. Можно пример?

Подскажите, пожалуйста, примеры вставляемого (insertable) и обновляемого (updateable) представления, работающего с несколькими таблицами. Не совсем понял то, что написано в документации. Смотрел не хабрахабре, с их примером тоже не разобрался. Можно на примере простых двух таблиц a и b:

create table a (id int, a1 int);
create table b (id int, b1 int);

Спасибо.

Неактивен

 

#2 16.10.2011 22:03:40

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: вставляемые и обновляемые представления. Можно пример?

Неактивен

 

#3 16.10.2011 22:19:19

vinslave
Участник
MySQL Authorized Developer
Зарегистрирован: 16.10.2011
Сообщений: 15

Re: вставляемые и обновляемые представления. Можно пример?

спасибо, большое. видел этот пример (пожалуй, он единственный в сети), но не понял, что к чему. Можно на примере приведенных мною двух таблиц?

Неактивен

 

#4 16.10.2011 22:35:08

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: вставляемые и обновляемые представления. Можно пример?

А представление на  какой именно запрос Вы хотите получить из своих таблиц a и b?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 17.10.2011 11:15:41

vinslave
Участник
MySQL Authorized Developer
Зарегистрирован: 16.10.2011
Сообщений: 15

Re: вставляемые и обновляемые представления. Можно пример?

вот тут я и пытаюсь разобраться, как построить такой запрос. Если представление выглядит так:

CREATE VIEW aa AS SELECT a.a1, b.b1 FROM a,b WHERE a.id=b.id

то ничего не получается со вставкой данных. Как можнт выглядить представление, чтобы можно было выполнить insert и/или update?

Неактивен

 

#6 17.10.2011 11:31:01

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: вставляемые и обновляемые представления. Можно пример?

Написанное вами представление допускает update.
Что касается insert, то

Обновляемое представление может допускать добавление данных (INSERT), если все поля таблицы-источника, не присутствующие в представлении, имеют значения по умолчанию.

следовательно insert в данном случае не получится.

Неактивен

 

#7 17.10.2011 11:37:44

vinslave
Участник
MySQL Authorized Developer
Зарегистрирован: 16.10.2011
Сообщений: 15

Re: вставляемые и обновляемые представления. Можно пример?

то есть, если я объявлю поля id как поля со значениями по умолчанию, я смогу использовать insert? можно тогда одним запросом вставить в обе таблицы a и b?

Неактивен

 

#8 17.10.2011 11:47:35

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: вставляемые и обновляемые представления. Можно пример?

Хм, у меня складывается впечатление, что статью вы не читали. А ведь автор работал, слова придумывал..

Обратите внимание: для представлений, основанных на нескольких таблицах, операция добавления данных (INSERT) работает только в случае если происходит добавление в единственную реальную таблицу.

Неактивен

 

#9 17.10.2011 11:50:08

vinslave
Участник
MySQL Authorized Developer
Зарегистрирован: 16.10.2011
Сообщений: 15

Re: вставляемые и обновляемые представления. Можно пример?

читал, но не все понял и не всё запомнил. Значит insert и update возможны только в одну раельную таблицу. Спасибо. Сейчас буду пробовать

Неактивен

 

#10 22.10.2011 20:22:25

vinslave
Участник
MySQL Authorized Developer
Зарегистрирован: 16.10.2011
Сообщений: 15

Re: вставляемые и обновляемые представления. Можно пример?

а для чего служит WITH CHECK OPTION . Как правильно пользоваться?

Неактивен

 

#11 22.10.2011 20:28:49

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: вставляемые и обновляемые представления. Можно пример?

Если VIEW содержит WHERE, то не все строки таблицы принадлежат VIEW. Формально можно вставить строку (или обновить) так, чтобы новая строка не принадлежала VIEW - по умолчанию это не запрещается. Если в определении VIEW есть WITH CHECK OPTION, то операции INSERT и UPDATE не могут создать строку, которая не будет удовлетворять условию WHERE.

Неактивен

 

#12 22.10.2011 20:58:13

vinslave
Участник
MySQL Authorized Developer
Зарегистрирован: 16.10.2011
Сообщений: 15

Re: вставляемые и обновляемые представления. Можно пример?

вот, теперь понял, наконец. Здорово, когда человек может хорошо объяснить. Спасибо smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson