|
|
|
Как установить запрет на использование поля в качестве первичного ключа
|
|||
|---|---|---|---|
|
#18+
Есть поле number. Как можно запретить это поле на использование в качестве первичного ключа? Если такое вообще возможно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 15:25 |
|
||
|
Как установить запрет на использование поля в качестве первичного ключа
|
|||
|---|---|---|---|
|
#18+
sanringoЕсть поле number. Как можно запретить это поле на использование в качестве первичного ключа? Если такое вообще возможно Никак. А главное не понятно зачем? Задача не понятна. Или вы занимаетесь дизайном базы и тогда не ясно зачем от себя замок ставить или не вы и тогда это не ваша головная боль. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 15:33 |
|
||
|
Как установить запрет на использование поля в качестве первичного ключа
|
|||
|---|---|---|---|
|
#18+
Именно это и нужно >от себя замок ставить Таковы условия задачи, придуманные не мной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 15:46 |
|
||
|
Как установить запрет на использование поля в качестве первичного ключа
|
|||
|---|---|---|---|
|
#18+
Ещё вопрос. Создал последовательность для поля number Код: plsql 1. 2. 3. 4. 5. 6. Создал таблицу Код: plsql 1. 2. 3. 4. 5. Номер должен формироваться минимальным из незанятых. Подойдёт ли для этого созданная последовательность? Как установить запрет на INSERT, UPDATE пользователем? Т.е. чтобы нельзя было сделать Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 16:10 |
|
||
|
Как установить запрет на использование поля в качестве первичного ключа
|
|||
|---|---|---|---|
|
#18+
sanringo, Станьте владельцем этого объекта. И никто кроме вас не сможет изменить его структуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 16:11 |
|
||
|
Как установить запрет на использование поля в качестве первичного ключа
|
|||
|---|---|---|---|
|
#18+
Нужно, чтобы даже владелец не смог ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 16:18 |
|
||
|
Как установить запрет на использование поля в качестве первичного ключа
|
|||
|---|---|---|---|
|
#18+
sanringoТаковы условия задачи, придуманные не мной. что мешает сменить работодателя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 16:26 |
|
||
|
Как установить запрет на использование поля в качестве первичного ключа
|
|||
|---|---|---|---|
|
#18+
Спасибо откликнувшимся. На доп вопросы, думаю правильнее создать отдельные темы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 17:42 |
|
||
|
Как установить запрет на использование поля в качестве первичного ключа
|
|||
|---|---|---|---|
|
#18+
sanringo, обычно такого рода задачи решаются разграничением прав. владелец объектов привелигированный пользователь, все миграции в схему выполняются от него. а приложениям/конечным пользователям/особо одаренным постановщикам задач выдаются только нужные права(роли) на чтение/запись. в более сложных случаях доступ оставляют через хранимки. как это делается - см. документацию по командам grant/revoke, alter default privileges. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 19:31 |
|
||
|
Как установить запрет на использование поля в качестве первичного ключа
|
|||
|---|---|---|---|
|
#18+
sanringoКак можно запретить это поле на использование в качестве первичного ключа? Сделайте его nullable. На таких полях ПК не строится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 19:33 |
|
||
|
Как установить запрет на использование поля в качестве первичного ключа
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovsanringoКак можно запретить это поле на использование в качестве первичного ключа? Сделайте его nullable. На таких полях ПК не строится. +1 гениально)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 19:40 |
|
||
|
Как установить запрет на использование поля в качестве первичного ключа
|
|||
|---|---|---|---|
|
#18+
sanringoЕсть поле number. Как можно запретить это поле на использование в качестве первичного ключа? Если такое вообще возможно В 9.5 такое можно сделать на триггерах событий, где появилась удобная функция pg_event_trigger_ddl_commands(). Триггер на событие ddl_command_end очевидно срабатывает в конце каждой DDL команды. Нам важно, что в этот момент системный каталог уже обновился и из триггера в эти обновления можно заглянуть. Первичный ключ создается командами CREATE TABLE или ALTER TABLE. Соответственно для этих команд нужно ругаться в случае появления столбца с неправильным типом данных в первичном ключе. Примерно так. В качестве плохого типа взял numeric: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 21:47 |
|
||
|
Как установить запрет на использование поля в качестве первичного ключа
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, Только владелец легко этот триггер дропнет или отключит временно если ему будет очень надо. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2016, 01:47 |
|
||
|
Как установить запрет на использование поля в качестве первичного ключа
|
|||
|---|---|---|---|
|
#18+
Максим, Владельца таблиц и владельца триггера нужно развести. Например, триггер создавать из под суперпользователя, а таблицы из под обычного пользователя. Тогда владелец таблиц не сможет удалить триггер. Кстати, я не обратил внимание, что number это оказывается имя столбца, а не тип данных. Впрочем правка функции минимальная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2016, 08:00 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=95&tid=1997364]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
74ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 337ms |

| 0 / 0 |
