Есть ли способ проверить, существуют ли строки уже и являются ли они активными?Контроль ограничений MySQL, если они существуют и активны
Пусть говорят строки выглядят так:
ID: 123456
Active : 1
Я знаю, что я мог бы сделать что-то подобное:
SELECT * FROM TableName WHERE id=123456 AND Active=1;
Но это не то, что я хочу.
И если я попытаюсь снова вставить запрос в таблицу с той же информацией, он не должен дублироваться.
Но ограничение должно работать, если оно не активно (0).
Я не хочу делать код проверки мудрым. Я хотел бы, чтобы сервер базы данных выполнял проверку.
Спасибо!
Я не совсем понимаю. Вы хотите, чтобы _permit_ 'INSERT', если' ID' дублируется и 'Active = 0', запрещая вставку, если' ID' дублируется и 'Active = 1'? В этом случае, если несколько строк были вставлены на ID с «Active = 0», а несколько «Active» были обновлены до «1» для одного «идентификатора», нарушило бы ограничение? –
Я хочу убедиться, что идентификатор не активен, прежде чем вставлять его. Если идентификатор активен, вставка не должна работать. Но если идентификатор не активен (0), тогда вставка должна работать. –
Но как насчет возможности вставки _many inactive rows_ для id? И не должны ли эти строки быть обновлены до активации позже? Другими словами, если бы многие были вставлены и 'UPDATE tbl SET active = 1 WHERE id = 123456 И active = 0' соответствовали 3 строкам, было бы ли это нарушением, чтобы обновить все 3 до' active = 1'? –