если у меня есть две таблицы: files(id, owner)
и share(file_id, user)
, где владелец и пользователь будут первичными идентификаторами из теоретической пользовательской таблицы, как я могу вставить запись в share
, только если пользователь, выполняющий совместное использование, владеет этимfile?
Это упрощенный пример, поэтому я просто буду использовать литерал для того, кто выполняет операцию общего доступа - обычно это значение берется из сеанса.Поэтому, если бы у меня было:
files:
id: 1, owner: 1
и пользователь 2 хочет увидеть файл 1, я бы использовал этот запрос:
insert into share values (1, 2)
, но это не разрешено - пользователь 2 не 'т свой файл 1, пользователь 1 делает.Я пытаюсь сделать это в одном запросе, но я не могу понять это.Я попытался:
case when (select owner from files where id=1) is 2
then (insert into share values (1, 2));
case (select owner from files where id=1) is 2
then (insert into share values (1, 2));
insert into share values (1, 2)
where 2 not in (select owner from files where id=1)
и все они синтаксические ошибки.Я делаю это из Python, поэтому после этого запроса я бы просто проверил Cursor.rowcount
, чтобы увидеть, равен ли он 1 или 0, а если 0, то у пользователя не было разрешения на завершение операции.
Как правильно написать этот запрос?