SQL
Как связать две таблицы между собой?
Есть таблица с рейтингами. Есть таблица с товарами. Как сделать так, чтобы при создании товара, в таблицу рейтинга автоматический добавлялся строка рейтинга, которая связана с созданным товаром? И посоветуйте, пожалуйста, хорошую книгу насчет создания баз данных и их проектирования с phpmyadmin.
Стандартная схема включает 4 SQL-команды:
START TRANSACTION
INSERT товар
INSERT рейтинг
COMMIT
Автоматизировать можно непосредственно в базе данных - создав в ней хранимую процедуру, выполняющую эти команды (и получающую на входе данные сразу для двух таблиц). Триггер в этом случае не подходит, т. к. во вторую таблицу вносятся данные, которых нет в первой таблице.
Но применительно к MySQL (с её крайне примитивным языком программирования) куда чаще используют ORM - не в базе, а в скриптах, работающих с базой. Ты просто создаешь и заполняешь данными объекты, а их синхронизация этих объектов с базой данных производится автоматически.
А phpMyAdmin - худшая из всех существующих систем администрирования MySQL. Единственное её достоинство в том, что работает она непосредственно на сервере и потому можно полностью заблокировать доступ к MySQL из интернета. Но если есть внешний доступ к БД, или SSH-доступ к серверу, то несравнимо удобнее использовать нормальные программы администрирования: от HeidiSQL до dbForge Studio.
START TRANSACTION
INSERT товар
INSERT рейтинг
COMMIT
Автоматизировать можно непосредственно в базе данных - создав в ней хранимую процедуру, выполняющую эти команды (и получающую на входе данные сразу для двух таблиц). Триггер в этом случае не подходит, т. к. во вторую таблицу вносятся данные, которых нет в первой таблице.
Но применительно к MySQL (с её крайне примитивным языком программирования) куда чаще используют ORM - не в базе, а в скриптах, работающих с базой. Ты просто создаешь и заполняешь данными объекты, а их синхронизация этих объектов с базой данных производится автоматически.
А phpMyAdmin - худшая из всех существующих систем администрирования MySQL. Единственное её достоинство в том, что работает она непосредственно на сервере и потому можно полностью заблокировать доступ к MySQL из интернета. Но если есть внешний доступ к БД, или SSH-доступ к серверу, то несравнимо удобнее использовать нормальные программы администрирования: от HeidiSQL до dbForge Studio.
Именно средствами MySQL? Вроде можно, но не проще ли скриптом внести еще одно значение?
http://studassistent.ru/mysql/svyazat-dve-tablicy-po-zadannym-polyam-mysql
http://studassistent.ru/mysql/svyazat-dve-tablicy-po-zadannym-polyam-mysql
mysql 5 полное руководство. была даже в отсканированном виде. насчет автоматических действий при внесении данных в какую то таблицу - есть такие шняги - триггеры называются. им посвящена целая глава в указанной выше книге.
Зачем phpmyadmin? Он же дико неудобный. Есть консоль, есть DataGrid.
Похожие вопросы
- Можно ли связать одно поле таблицы с несколькими полями другой таблицы?
- SQL. Есть таблица а и b как мне поставить ограничение на поле таблицы b, на основании поля таблицы a? пример в описании
- Вопрос по SQL - уникальное поле ID для трёх таблиц (нельзя вставить значения в одну, если оно есть в другой таблице).
- Как в одной записи таблицы хранить несколько полей одного типа (не фиксированное число)?
- Блин что то не могу найти способ произвести эффективную выборку данных из таблицы БД?
- SQL,БД. Какие данные могут быть в таблице users?
- Postgresql Как правильно наладить связь между таблицами в базк данныъ?
- UPDATE обновить все таблицы.. помогите с запросом??? (вн подробнее)
- PostgreSQL Extensions. С помощью модуля tablefunc получите из таблицы projects базы HR
- 5.Операторы SQL для выборки данных из таблицы в Oracle?
а именно CREATE TRIGGER `update_test` AFTER INSERT ON `test`
FOR EACH ROW BEGIN
INSERT INTO log Set msg = 'insert', row_id = NEW.id;
END;* This source code was highlighted with Source Code Highlighter.
врят ли в таблице `test` есть поле msg со значением insert...