Quasar писал(а):
1. На стр 746 в примечании научного редактора сказано:
...если выдан GRANT на UPDATE к столбцам явно, то успешно может быть выполнен только UPDATE всей таблицы, без указания ограничения WHERE. Таким образом, выдача GRANT на UPDATE к конкретным столбцам является совершенно бесполезной.
И тем не менее, у меня это работает, я делаю UPDATE с указанием в WHERE значения первичного ключа, и значение стобца данной записи меняется. Может я что-то не так понял? Использую FIBDataSet.
Ты давал гранты именно на апдейт отдельных полей в таблице, а не просто на апдейт таблицы? И грант на селект не давал? Тогда не верю что работает. Хотя... в FB2 не смотрел, может что и поправили.
Quasar писал(а):
2. На стр. 747 сказано:
Когда для триггера, хранимой процедуры или просмотра нужен доступ к таблице или просмотру, достаточно, чтобы владелец объекта, к которому требуется доступ, сам объект или пользователь, использующий триггер, процедуру или просмотр, имел необходимые полномочия.
Следует ли из этого, что если таблица и процедура, которая к ней обращается, имеют одного пользователя, то любой пользователь имеющий право EXECUTE на данную процедуру имеет возможность ее выполнить, даже если ни пользователь ни процедура не обладают правами на таблицу?
Сказано, конечно, мудрёно, однако вывод сделан совсем сногсшибательный

А может изложен в стиле, перед которым меркнет даже оригинал

Попыталсо представить позу, в которой таблица и процедура имеют несчастного пользователя
Тут речь вот о чём. Когда выполянется, скажем, простой селект по таблице из приложения, то права должен иметь пользователь или роль, которая ему грантована и с которой он подключился к базе. Если этот же селект выполняется через какой-то объект в базе (например, он выполняется в вызываемой пользователем процедуре или в триггере, сработавшем при модификации пользователем какой-то другой таблицы) то право должен иметь либо опять же пользователь/роль, либо этот объект (процедура, триггер), а пользователю достаточно иметь право только на этот объект. Либо и пользователь и объект должны иметь это право, ну это естественно, OR он и в Африке OR. Создатель (владелец) любого объекта (процедуры, таблицы, триггера, вья...) имеет на него все права автоматически, сам себе он грантовать ничего не должен. Хотя эти права хранятся в системных таблицах так же, как будто ему их кто-то грантовал, они просто пишутся туда автоматицки при создании объекта.
Прояснил или ещё больше запутал?
