Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Проверка логического условия


Автор: UsamaBrainLaden 13.11.2008, 02:20
Есть две таблицы:

CREATE TABLE users
(
    id             MEDIUMINT AUTO_INCREMENT PRIMARY KEY,
    name       CHAR(10)
);

CREATE TABLE posters
(
    id             MEDIUMINT AUTO_INCREMENT PRIMARY KEY,
    topic        CHAR(10),
    owner      MEDIUMINT REFERENCES users(id)
);

Таблица пользователей (users) хранит имена пользователей и их код,а таблица объявлений (posters) хранит номер объявления, его текст и код пользователя, который это объявление повесил. У всех пользователей есть полный доступ к таблице (имеется ввиду SELECT,INSERT и DELETE), но в тоже время пользователь может удалять только своё объявление. Иными словами необходимо проверить совпадение кода пользователя пытающегося удалить запись с кодом который записан в таблицу posters:

posters.owner = 
(SELECT id
FROM users
WHERE users.name = SUBSTRING_INDEX(USER(),'@',1) );

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

Автор: Akina 13.11.2008, 09:03
Триггером 

Автор: UsamaBrainLaden 14.11.2008, 03:43
Проверку то можно сделать триггером,а вот отмену удаления в случае неудовлетворения условия...?

Автор: Akina 14.11.2008, 10:38
А что мешает? на то и триггер... маны читаем, да...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)