Postgresql: używanie wartości „NULL” podczas wstawiania i aktualizowania wierszy za pomocą przygotowanych instrukcji

czasami muszę wstawić do tabeli pewne wartości null lub zaktualizować je ustawiając wartość na NULL.

Czytałem gdzieś w dokumentacji postgresql, że nie można tego zrobić, ale może byćtricket z wartością domyślną:

<code>pg_query("INSERT INTO my_table (col_a, col_b) VALUES ('whatever', default)
</code>

p.s: wiem, że w tym przykładzie będę miał taki sam wynik

<code>pg_query("INSERT INTO my_table (col_a) VALUES ('whatever')
</code>

Ale problemy wynikają z przygotowanych oświadczeń:

<code>pg_prepare($pgconn, 'insert_null_val', "INSERT INTO my_table (col_a, col_b) VALUES ($1, default)");
pg_exec($pgconn, 'insert_null_val', array('whatever'));
//this works, but
pg_prepare($pgconn, 'insert_null_val', "INSERT INTO my_table (col_a, col_b) VALUES ($1, $2)");
pg_exec($pgconn, 'insert_null_val', array('whatever', 'NULL'));
//insert into the table the string 'NULL'.
//instead using array('whatever', '') it assume the col_b as empty value, not NULL.
</code>

Ten sam problem pochodzi z zapytania o aktualizację.

Myślę, że istnieje rozwiązanie, ponieważ pgmyadmin może to zrobić (lub wydaje się, że może) i jest napisany w php (nie sądzę, żeby mimo wszystko korzystał z przygotowanych instrukcji)

Jeśli zastanawiasz się, dlaczego muszę paly z wartościami null w moich tabelach, pozwól mi rzucić przykład (być może jest lepszy sposób niż wartość null): załóżmy, że mam tabelę użytkownika i e-mail col: ten może być pusty , ale jest indeksem unikalnym. Są 2 puste wiadomości e-mailrówny i narusza unikalne ograniczenie, a 2ZERO wartości nie są równe i mogą współistnieć.

questionAnswers(1)

yourAnswerToTheQuestion