Как сделать так, чтобы удалялась строка, при этом одно поле принадлежит полю в другой таблице
У меня есть две таблицы groups и students. В таблице students поле group.id связано с group.id в таблице groups. При попытке удаления строки через идентификатор он выдает ошибку
def dels(self):
try:
ids = int(self.idp.text()) # идентификатор строки
except:
return
try:
self.cur.execute("delete from groups where id=%s",(ids,))
self.upd()
except:
print('Ошибкааа')
Значение, которое находится в student.group.id при этом переданное из таблицы groups.group.id , допустим 3 не может быть удалено, поскольку оно находится в таблице students. Другими словами я не могу удалить строку groups.group.id с значением 3, так как оно находится в students.group.id
Я бы хотел удалить строку по идентификатору в таблице groups, при этом сразу же чтобы подставлялось значение NULL в таблице students в поле students.group.id . Как это сделать?
Я пробовал писать сразу же UPDATE на NULL при удалении, но у меня это не сработало, да и в принципе все строки примут значение NULL, мне это не нужно, лишь конкретная строка.
UPDATE students SET group_id = NULL FROM (SELECT * FROM groups) AS groups WHERE groups.group_id = students.group.id