Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ограничение на запись, в MySQL 
:(
    Опции темы
Keeper89
Дата 9.4.2009, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 1
Всего: 58



Доброго времени суток!

Работаю в связке Delphi + MySQL. Хотелось вы выяснить следующее: возможно ли запретить каким-либо образом (средствами СУБД или программно) изменение данных моей программой. 
Поясню: допустим программа меняет количество товара у поставщика Х на определенное число. Можно ли сделать так, чтобы программа не смогла изменить кол-во товара у конкретного человека Y?

Заранее спасибо.


--------------------
PM MAIL WWW   Вверх
Kbl4AH
Дата 9.4.2009, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 6
Всего: 15



Цитата(Keeper89 @  9.4.2009,  13:45 Найти цитируемый пост)
программа меняет количество товара у поставщика Х на определенное число.

Каким образом меняет: редактированием грида (что-то типа: если значение поля человек равно Y, то запретить редактирование), запросом (update table set количество = новое_значение where человек = X и человек не равен Y)... Как-то так примерно...

ЗЫ. Какой вопрос - такой ответ smile 
PM MAIL ICQ   Вверх
Anakin
Дата 9.4.2009, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 25.9.2006

Репутация: нет
Всего: нет



Ну можно допустим добавить поле с Типом БОЛЕАН
Выходит так что если значение Поля ТРУЕ тогда можно редактировать а если значение Фалсе тогда нельзя.
И каждый раз программно проверять значение поля перед редактированиям. Я както использовал такое в программе. Когда нет так как не дома. НО если устраивает такой Тип могу Вечером скинуть примерный код.
PM MAIL   Вверх
Keeper89
Дата 9.4.2009, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 1
Всего: 58



Цитата(Kbl4AH @  9.4.2009,  16:43 Найти цитируемый пост)
Каким образом меняет: редактированием грида (что-то типа: если значение поля человек равно Y, то запретить редактирование), запросом (update table set количество = новое_значение where человек = X и человек не равен Y)... Как-то так примерно...

Внесение новых значений и редактирование осуществляется запросами, если говорить о конкретике.
Цитата(Anakin @  9.4.2009,  16:51 Найти цитируемый пост)
Ну можно допустим добавить поле с Типом БОЛЕАН

Спасибо за идею, возьму на заметку.
Для начала хотелось бы определить возможность (!) такого решения - при работе с БД установить блокировку на запись для определенного поставщика (например настройкой БД или управлением через Delphi), чтобы один и тот же код с запросом выполнялся нормально для X, но выдавал ошибку для Y.

Это сообщение отредактировал(а) Keeper89 - 9.4.2009, 22:09


--------------------
PM MAIL WWW   Вверх
Kbl4AH
Дата 9.4.2009, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 6
Всего: 15



Цитата(Keeper89 @  9.4.2009,  23:00 Найти цитируемый пост)
чтобы один и тот же код с запросом выполнялся нормально для X, но выдавал ошибку для Y

имхо анриал

Добавлено через 56 секунд
для БД все записи одинаковы
PM MAIL ICQ   Вверх
Akella
Дата 10.4.2009, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



В MySQL появились триггеры, может в них можно?
PM MAIL   Вверх
cemick
Дата 10.4.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 6



Ну а условия то что ли уже отменили??? Ты же знаешь у кого меняешь.. Странный вопрос, нужна конкретика
PM MAIL WWW   Вверх
Frees
Дата 10.4.2009, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



помоему речь идет о блокировке записи при одновременном редактировании, так?

Добавлено через 59 секунд
"холостой" update в незакомиченной транзакции не заблокирует запись? 


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Keeper89
Дата 11.4.2009, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 1
Всего: 58



Цитата(Akella @  10.4.2009,  11:36 Найти цитируемый пост)
В MySQL появились триггеры, может в них можно? 

Решение отличное, но к сожалению поддержка для триггеров включена, начиная с MySQL 5.0.2, а используется 3.x...

Цитата(Frees @  10.4.2009,  15:00 Найти цитируемый пост)
помоему речь идет о блокировке записи при одновременном редактировании, так?

Не совсем. Речь идет о блокировке изменений для конкретного значения.

Есть идея создания дополнительного приложения, которое будет при обновлении конкретной записи возвращать изменения обратно. Что скажете - возможно и если да, то как?



--------------------
PM MAIL WWW   Вверх
Kbl4AH
Дата 11.4.2009, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 6
Всего: 15



Цитата(Keeper89 @  11.4.2009,  18:55 Найти цитируемый пост)
Есть идея создания дополнительного приложения, которое будет при обновлении конкретной записи возвращать изменения обратно.

Зачем изменять начальные значения, а потом изменять на начальные значения???
Не проще сразу запретить изменение?
PM MAIL ICQ   Вверх
Keeper89
Дата 11.4.2009, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 1
Всего: 58



Цитата(Kbl4AH @  11.4.2009,  18:01 Найти цитируемый пост)
Не проще сразу запретить изменение? 

Как?


--------------------
PM MAIL WWW   Вверх
Kbl4AH
Дата 11.4.2009, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 6
Всего: 15



Цитата(Keeper89 @  11.4.2009,  22:00 Найти цитируемый пост)
Как?

Как, как... В событии Dataset'а BeforePost написать DataSet.Cancel... 
Как вариант smile 
ЗЫ. Блин, ну ты чего? Толком не говоришь что нужно, фрагменты кода не выкладываешь... Я ведь не могу сам догадаться что у тебя за задача...
PM MAIL ICQ   Вверх
Keeper89
Дата 11.4.2009, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 1
Всего: 58



Цитата(Kbl4AH @  11.4.2009,  21:20 Найти цитируемый пост)
ЗЫ. Блин, ну ты чего? Толком не говоришь что нужно, фрагменты кода не выкладываешь... Я ведь не могу сам догадаться что у тебя за задача... 

Еще разок:
1) есть приложение, добавляющее/обновляющее параметры поставщиков - оно закрыто, и внутрь я никак не залезу (например, не добавлю проверку условий или т.п.);
2) поэтому есть 2 варианта осуществления контроля - на уровне БД (триггеры отпадают из-за версии) и дополнительным приложением.

Вот собственно и все.

Это сообщение отредактировал(а) Keeper89 - 11.4.2009, 23:48


--------------------
PM MAIL WWW   Вверх
Kbl4AH
Дата 12.4.2009, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 6
Всего: 15



Цитата(Keeper89 @  12.4.2009,  00:41 Найти цитируемый пост)
Еще разок:1) есть приложение, добавляющее/обновляющее параметры поставщиков - оно закрыто, и внутрь я никак не залезу (например, не добавлю проверку условий или т.п.);

Раньше ты говорил немножко другое:
Цитата(Keeper89 @  9.4.2009,  13:45 Найти цитируемый пост)
Хотелось вы выяснить следующее: возможно ли запретить каким-либо образом (средствами СУБД или программно) изменение данных моей программой.


ЗЫ.  Тогда, наверное, придется изменять записи на начальные значения, как ты и предполагал...
PM MAIL ICQ   Вверх
Keeper89
Дата 12.4.2009, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 1
Всего: 58



Цитата(Kbl4AH @  12.4.2009,  00:18 Найти цитируемый пост)
Раньше ты говорил немножко другое:

Согласен, не корректно сказал вначале.
Цитата(Kbl4AH @  12.4.2009,  00:18 Найти цитируемый пост)
ЗЫ.  Тогда, наверное, придется изменять записи на начальные значения, как ты и предполагал... 

Как лучше реализовать?


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1356 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.