Нет. Запретить обновление столбца, который является частью ограничения «первичного ключа», невозможно, используя глобальный сервер, сеанс и т. Д. переменная.
Если вы хотите, чтобы инструкция UPDATE не вносила изменения, вы можете попробовать применить это с помощью триггера ДОПОЛНЕНИЕ на каждой таблице.
SET NEW.primary_key_col = OLD.primary_key_col;
Followup:
dmjm говорит: "я предпочел бы бросить ошибку ..."
Бросать ошибку из триггера с использованием MySQL 5.5 или более поздней версии, может использовать новый синтаксис SIGNAL
.
С MySQL 5.1 или ранее нет прямого способа выбросить ошибку, поэтому разработчики внедрили «плохой» код, который выполняется (фактически), гарантируя, что возникла ошибка.
IF (NEW.primary_key_col <> OLD.primary_key_col) THEN
UPDATE `Error: primary_key_col modification not allowed` SET dummy=0 WHERE dummy=-1;
END IF;
Так что вы пытаетесь делать? –
Извините за мое невежество, насколько именно «обновление первичного ключа»? –
@Sylvain Leroux: Я думаю, что это относится к 'UPDATE', который устанавливает значение столбца, содержащегося в ограничении PRIMARY KEY, новому значению. – spencer7593