Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

id com not null

por que é necessário passar not null se o id é auto_increment?

deste modo nem precisamos passar o valor para ele.

4 respostas

O id funciona como primary key, certo? Nesse caso o mesmo não pode ser nulo, ou você não terá como procurar atributos na linha desse id. O auto_increment apenas automatiza o processo de incrementar o id a cada vez que um novo for criado. Ficou claro?

ok, mas como ele é auto increment tem como em algum momento ele ser null ?

Nesse caso o id não pode ser nulo porque o mesmo é a chave primária da sua tabela. Sobre o auto_increment, assim que uma nova linha for adicionada a tabela será dado um valor para o id, e este não pode ser alterado para NULL pela razão já explicada. Ou seja, creio que um campo auto_increment pode até ser null se for alterado, mas não nesse caso.

solução!

Fala Luiz!

O auto increment significa que a chave será gerada automaticamente. Isso você já sabe.

O not null significa que o campo não pode ser null. Isso você também já sabe.

O lance é que você pode setar o id de qualquer linha na mão, através de uma instrução sql. Se você fizer isso, não é interessante o campo que identifica unicamente seu registro não exista. Ou seja, você pode trocar o id de um registro da tabela de 1 para 100. Perceba que se não houvesse o not null, nesse caso, você poderia setar para null o id do registro.

Imagine uma tabela

|-----------------------------------|
| pessoa                            |
|-----------------------------------|
| id (not null, auto increment)     |
| nome (varchar(255))               |
|-----------------------------------|

e os inserts

insert into tabela (nome) values ('Manoel');
insert into tabela (nome) values ('Francisco');
insert into tabela (nome) values ('Jose');
insert into tabela (nome) values ('Marcos');

Você pode dar um select em todos os registros, para poder ver os ids

select * from tabela;

Seu retorno seria algo tipo

1 Manoel
2 Francisco
3 Jose
4 Marcos

Aí, você dá um update, alterando o id do Manoel para 100

update tabela set id = 100 where id = 1;

Seu retorno agora seria algo tipo

2 Francisco
3 Jose
4 Marcos
100 Manoel

Perceba que a restrição not null não tem muito a ver com o auto increment, mas ela evita que um registro seja inserido com o id null. Isso fere a primeira forma normal.

Espero ter ajudado.

Abraço.