2015-06-04 5 views
0

Я много работал. MySQL, но не с представлениями. То, что я хочу сделать, концептуально просто. У вас есть две таблицы, создайте представление, которое их объединяет, и вставьте/обновите/удалите в виде, подобном таблице. Что-то вроде:Вставить в таблицу двух таблиц?

Пример:

CREATE TABLE IF NOT EXISTS `baseuser` (
    `id` int(11) NOT NULL, 
    `uname` varchar(55) NOT NULL, 
    `pwd` varchar(55) NOT NULL 
) ENGINE=InnoDB ; 

CREATE TABLE IF NOT EXISTS `facultydet` (
    `id` int(11) NOT NULL, 
    `baseuser_id` int(11) NOT NULL, 
    `department` varchar(55) DEFAULT NULL 
) ENGINE=InnoDB; 

CREATE ALGORITHM = MERGE 
VIEW `facultyuser` 
AS SELECT `baseuser`.`id` AS `id`, `uname`, `pwd`, `department` 
FROM `baseuser`, `facultydet` 
WHERE `facultydet`.`baseuser_id` = `baseuser`.`id`; 

выше создает вид «facultyuser», который я могу обновить, но я не могу вставить или удалить из поля зрения «facultyuser». Есть ли способ сделать это прямо с таким видом? Я пробовал разные варианты в VIEW и TABLE defs, посмотрел на документы mysql, но, очевидно, я что-то упустил. Любые советы приветствуются.

Спасибо,

Chris

ответ

1

Прямо из Документов 18.4.3 Updatable and Insertable Views:

В отношении к введению (будучи обновляемым с вкладышем заявления), итератор обновляемого мнение вставляться, если она удовлетворяет эти дополнительные требования к колонкам обзора:

Не должно быть дубликатов просмотреть имена столбцов.

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

Столбцы представления должны быть простыми ссылками на столбцы. Они не должны быть выражения или составные выражения

Кроме того, вы не можете изменить более одной таблицы в join'd зрения, так что вы в основном не повезло с этим подходом.

Иногда возможен для просмотра несколько столов, чтобы быть обновляемым, при условии, что он может быть обработан с помощью алгоритма MERGE. Для этого для работы, представление должно использовать внутреннее соединение (а не внешнее соединение или соединение ). Кроме того, только одна таблица в определении представления могут быть обновлены

+0

Ничего себе, это действительно печально, но ясно, что правильный ответ. Благодарю. – ChrisNY

Смежные вопросы