Como evitar atualizações para TODAS as linhas na tabela do Mysql? [fechadas]

1

Existe uma maneira pela qual a atualização para TODAS as linhas de uma tabela do Mysql pode ser negada ou evitada?

Antecedentes:

Eu tenho uma tabela 'Orders' tendo 'OrderID' (Type VARCHAR) e 'VendorID' (Type Integer) como duas das colunas. Se eu executar a consulta abaixo nesta tabela, ela simplesmente redefinirá o VendorID em todas as linhas:

SET 'VendorID' = 0 WHERE 'OrderID' = 0

OrderID não deve ser 0, mas devido a algum bug no sistema, ele escapou de todas as verificações e causou estragos. Se OrderID fosse do tipo Integer, essa consulta não teria feito nada. Mas como o OrderID possui alfabetos, ele não pode ser definido como tipo Integer.

O Mysql pode ser configurado de tal maneira que ele rejeita Atualizações para todas as linhas? O resultado dessa mudança de consulta seria se o banco de dados subjacente não fosse o Mysql?

Meu ambiente:

nginx / 1.4.6 Codeigniter (2.x) / Mysql (5.5) / tipo de tabela InnoDB

Por favor, sugira como esse problema poderia ser evitado no futuro, obrigado.

    
por AAgg 13.04.2017 / 21:42

1 resposta

2

Sua pergunta sobre o DBA Stack Exchange foi marcada como uma duplicata de uma pergunta de transmissão ... duvido que seus dados tenham resolvido o problema, então estou usando essa pergunta para responder.

Order_id parece que deve ser uma chave primária (única e não nula) ...

alter table orders
add primary key (order_id);

Se order_id não for uma boa chave primária (ou seja, é anulável), então crie uma chave única ...

alter table orders
add constraint orders_orderid_uk
    unique (order_id);
    
por 14.04.2017 / 17:00

Tags