Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Какой подход правильнее?
 
 автор: DIM@   (30.04.2008 в 00:18)   письмо автору
 
 

Доброй ночи,

Вопрос состоит в следующем, при сохранении данных необходимо их обновление в нескольких таблицах-справочниках, отсюда 2 подхода, какой наиболее правильный, а может есть другой вариант, т.к. я не гуру в SQL.

1. Удаляем из таблицы-справочника все данные связанные с обновляемой записью и затем вставляем все их заново обновленные. На переменные PHP не смотрите они заполняются данными и в этом проблемы нет.

DELETE FROM pasprav where particleid=".$idPArticle;
INSERT INTO pasprav SET particleid=".$idPArticle.", spravid=".$idSprav.", paspravidRecSprav=".$idRec;


2. Вместо удаления проверять на наличее записи в таблице-справочнике и если есть делать UPDATE, иначе INSERT

3. Может есть и 3 вариант.

   
 
 автор: Syava   (30.04.2008 в 07:06)   письмо автору
 
   для: DIM@   (30.04.2008 в 00:18)
 

Думаю что второй вариант лучше..

   
 
 автор: mechanic   (30.04.2008 в 09:03)   письмо автору
 
   для: DIM@   (30.04.2008 в 00:18)
 

replace into pasprav set particleid=".$idPArticle." , spravid=".$idSprav.", paspravidRecSprav=".$idRec;

если запись имеется, она будет заменена, если записи нет - она будет вставлена
предполагается что particleid unique или primary key

   
 
 автор: DIM@   (30.04.2008 в 11:52)   письмо автору
 
   для: mechanic   (30.04.2008 в 09:03)
 

Спасибо, именно на 3 вариант я и расчитывал, я знал что всетаки должна быть команда которая делает эти два действия за один раз.
А если не particleid unique и не primary key

CREATE TABLE  `pasprav` (
  `particleid` int(9) default NULL,
  `spravid` int(9) default NULL,
  `paspravidRecSprav` int(9) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

INSERT INTO `pasprav` (`particleid`, `spravid`, `paspravidRecSprav`) VALUES
(121, 3, 2),
(121, 7, 2),
(120, 7, 3),
(119, 3, 3),
(119, 7, 2),
(118, 7, 2),
(118, 3, 3));


По своему замыслу здесь могут быть несколько записей для particleid. Уникальны можно считать только particleid и spravid в связке :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования