Czy istnieje przenośny sposób na napisanie poniższego CZEKU? CREATE TABLE tbl ( id1 INTEGER NOT NULL, id2 TEXT NOT NULL, PRIMARY KEY (id1), CHECK ('sprawdź, czy id2 jest dodatnią liczbą całkowitą') )

sql
0
Anton Lahti 16 czerwiec 2021, 12:54

3 odpowiedzi

Najlepsza odpowiedź

Nie, nie ma przenośnego sposobu radzenia sobie z nieprawidłowymi danymi.

To powiedziawszy, każda baza danych ma własne sposoby radzenia sobie ze zniekształconymi danymi. Typowym rozwiązaniem jest użycie wyrażenia regularnego w ograniczeniu sprawdzającym. Inne rozwiązanie może próbować rzutować wartość na skalar liczbowy. Wszystkie te rozwiązania działają, ale mają swoje dziwactwa w każdej bazie danych.

Sugerowałbym, abyś naprawił typ danych, jeśli to możliwe. To znacznie uprości wszystkie te bóle głowy.

1
The Impaler 16 czerwiec 2021, 13:23

Użyj typu danych id2 integer i użyj ograniczenia jak poniżej

CREATE TABLE tbl (id1 integer NIE NULL KLUCZ PODSTAWOWY, id2 integer NIE NULL SPRAWDŹ (id2 > 0));

0
Syed Ahmad 16 czerwiec 2021, 10:13

Użyj odpowiedniego typu danych, integer, nie text i sprawdź, czy wartości są dodatnie (lub nieujemne).

CREATE TABLE tbl
             (id1 integer
                  NOT NULL,
              id2 integer
                  NOT NULL,
              PRIMARY KEY (id1),
              CHECK (id2 > 0));
0
sticky bit 16 czerwiec 2021, 10:05