Russian Qt Forum
Ноябрь 24, 2024, 07:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: UNIQUE VARCHAR  (Прочитано 3764 раз)
Alp
Гость
« : Ноябрь 21, 2009, 21:50 »

Есть простенькая БД (sqlite) из семи полей, последнее VARCHAR(1024) хочется сделать уникальным.
Код
C++ (Qt)
   QString q = "CREATE TABLE IF NOT EXISTS " + QString(tableName) + " ("
               "key INTEGER PRIMARY KEY NOT NULL AUTOINCREMENT,"
               "author VARCHAR(255),"
               "singer VARCHAR(255),"
               "title VARCHAR(255),"
               "descr VARCHAR(255),"
               "type VARCHAR(2),"
               "filename VARCHAR(1024)"
               ")";
 
В SQL я почти полный ноль, потому найти в гугле подходящую инструкции не сумел.

Из того, что пробовал:
Код
C++ (Qt)
"CONSTRAINT uniq_data UNIQUE(filename)"
не помогло, хотя таблица создалась, но запись с таким же именем файла успешно добавилась

Код
C++ (Qt)
"filename UNIQUE VARCHAR(1024)"
тут просто таблица не создалась.

Делать имя файла ключом как-то странно, на мой взгляд, хотя может быть для подобных случаев это и принятая практика? Но если мне потребуется в дальнейшем нормализовать таблицу, то объединять их по имени файла глупость несусветная...
Записан
Rcus
Гость
« Ответ #1 : Ноябрь 21, 2009, 21:58 »

Код:
main@krchome:~$ sqlite3
SQLite version 3.6.16
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table test_table (id integer primary key, name text, constraint name_uniqueness unique(name));
sqlite> insert into test_table (name) values ('a');
sqlite> insert into test_table (name) values ('b');
sqlite> select * from test_table;
1|a
2|b
sqlite> insert into test_table (name) values ('a');
SQL error: column name is not unique
sqlite> insert into test_table (name) values ('c');
sqlite> insert into test_table (name) values ('b');
SQL error: column name is not unique
...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.101 секунд. Запросов: 21.