Ограничение количества символов, введенных в SQLite3 - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь создать базу данных SQL со следующими полями:

connection= sqlite3.connect('Main Database')
crsr = connection.cursor()
#Creates a table for the teacher data if no table is found on the system
crsr.execute("""CREATE TABLE IF NOT EXISTS Teacher_Table(Teacher_ID INTEGER PRIMARY KEY,
                    TFirst_Name VARCHAR(25) NOT NULL,
                    TLast_Name VARCHAR (25) NOT NULL,
                    Gender CHAR(1) NOT NULL,
                    Home_Address VARCHAR (50) NOT NULL,
                    Contact_Number VARCHAR (14) NOT NULL);""")
connection.commit()
connection.close()

Но когда я ввожу значения, поле пола принимает более одного значения Просмотр базы данных

Как я могу убедиться, что он принимает только один символ для этого поля

1 Ответ

0 голосов
/ 10 ноября 2018

Как я могу убедиться, что он принимает только один символ для этого поля

SQLite не проверяет ограничения длины, определенные на уровне типа, как указано в документации для типов :

(...) Обратите внимание, что числовые аргументы в скобках , следующие за именем типа (например: "VARCHAR(255)") игнорируются SQLite - SQLite делает не накладывать никаких ограничений на длину (кроме большого глобального ограничения SQLITE_MAX_LENGTH) на длину строк, больших двоичных объектов или числовых значений.

Таким образом, вы не можете применять на уровне базы данных. Таким образом, вам необходимо обеспечить это через ваши взгляды и т. Д.

Однако мы можем, как говорит @ Ilja Everilä , использовать ограничение CHECK:

CREATE TABLE IF NOT EXISTS Teacher_Table(
    Teacher_ID INTEGER PRIMARY KEY,
    TFirst_Name VARCHAR(25) NOT NULL,
    TLast_Name VARCHAR (25) NOT NULL,
    Gender CHAR(1) NOT NULL <b>CHECK (length(Gender) < 2)</b>,
    Home_Address VARCHAR (50) NOT NULL,
    Contact_Number VARCHAR (14) NOT NULL
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...