Мощь MySQL

ON DELETE CASCADE

CREATE TABLE test1 ( 
id INTEGER NOT NULL,
parent INTEGER,
PRIMARY KEY (id),
FOREIGN KEY (parent) REFERENCES test1 (id)
ON UPDATE CASCADE
ON DELETE CASCADE
);

правило ON DELETE CASCADE, заданное для внешнего ключа по полю PARENT. Благодаря нему, при удалении узла будет автоматически удалено и все поддерево, для которого этот узел является корнем.

ON DUPLICATE KEY

// находим объект
$row = query('SELECT * FROM table WHERE id=1');
// проверяем есть ли такой объект
if ($row) {
// делаем апдейт
query('UPDATE table SET column=column+1 WHERE id=1');
}
else {
// делаем вставку
query('INSERT INTO table SET column=1, id=1');
}

Можно заменить на запрос без php

INSERT INTO table SET column = 1, id=1 ON DUPLICATE KEY UPDATE column = column + 1

INSERT IGNORE

// находим объект
$row = query('SELECT * FROM table WHERE id=1');
// если такого объекта нет, то вставляем новую запись
if (!$row) {
query('INSERT INTO table …');
}

заменяем на запрос без php

INSERT IGNORE INTO table …
Оставить комментарий

Ваш электронный адрес не будет опубликован. Обязательные поля помечены *