SQL привилегии, определенные ANSI — это привилегии объекта. Это означает, что пользователь имеет привилегию, чтобы выполнить данную команду только на определенном объекте в базе данных. Очевидно, что привилегии должны различать эти объекты, но система привилегий, основанная исключительно на привилегиях объекта не может описывать все, что нужно SQL, как мы увидим это позже в этой главе.
Привилегии объекта связаны одновременно и с пользователями, и с таблицами. То есть, привилегия дается определенному пользователю в указанной таблице, или базовой таблице или представлении. Вы должны помнить, что пользователь, создавший таблицу (любого вида), является владельцем этой таблицы. Это означает, что пользователь имеет все привилегии в этой таблице и может передавать привилегии другим пользователям в этой таблице.
Привилегии, которые можно назначить пользователю:
SELECTПользователь с этой привилегией может выполнять запросы в таблице.
INSERTПользователь с этой привилегией может выполнять команду INSERT в таблице.
UPDATE Пользователь с этой привилегией может выполнять команду UPDATE на таблице. Вы можете ограничить эту привилегию для определенных столбцов таблицы.
DELETEПользователь с этой привилегией может выполнять команду DELETE в таблице.
REFERENCES Пользователь с этой привилегией может определить внешний ключ, который использует один или более столбцов этой таблицы, как родительский ключ. Вы можете ограничить эту привилегию для определенных столбцов. (Смотрите Главу 19 для подробностей относительно внешнего ключа и родительского ключа.)
Кроме того, вы столкнетесь с нестандартными привилегиями объекта, такими, например как INDEX, дающая право создавать индекс в таблице, SYNONYM, дающая право создавать синоним для объекта, который будет объяснен в Главе 23, и ALTER, дающая право выполнять команду ALTER TABLE в таблице. Механизм SQL назначает пользователям эти привилегии с помощью команды GRANT.