1行ではありません ただし、単一の行を含むビューは、実際の実際のテーブルを更新します。
これは、学生ごとに特定のテーブルビューを介して実行できます(はい、それは厄介なDB構造になります)。このユーザーにビューへのアクセスを許可するのは、選択/更新のみであり、主キーは更新できません。ビューが更新されると、メインテーブルが自動的に更新されます。
CREATE SCHEMA `example` ;
CREATE TABLE `example`.`student` (
`id` INT NOT NULL,
`name` VARCHAR(45) NULL,
`email` VARCHAR(45) NULL,
PRIMARY KEY (`id`));
INSERT INTO `example`.`student` (`id`, `name`, `email`) VALUES ('1', 'bob', '[email protected]');
USE `example`;
CREATE
OR REPLACE SQL SECURITY DEFINER
VIEW `student_1` AS
SELECT
`student`.`id` AS `id`,
`student`.`name` AS `name`,
`student`.`email` AS `email`
FROM
`student`
WHERE
(`student`.`id` = '1');
CREATE USER 'student_1_user'@'localhost' IDENTIFIED BY 'user_password';
GRANT SELECT,UPDATE ON example.student_1 TO [email protected] IDENTIFIED BY 'user_password';
UPDATE example.student_1 SET email='[email protected]'; // note no primary key needed or allowed