У меня есть простая таблица, где каждое поле word привязано к значению id (auto increment) из другой таблицы
CREATE TABLE WORDS (ID_USER INT, WORD VARCHAR(30), FOREIGN KEY (ID_USER) REFERENCES USERS (ID));
Можно ли сделать так, чтобы значение word было уникальным только по отношению к его id?
То есть уникальные поля word только для своего id, а между собой с разными id могут повторяться
например, слово 'стек' с id 1 и 'стек' с id 2 могут существовать, но при добавлении 'стек' с id 2 уже нельзя было добавить
Можно наложить unique constraint по двум полям. Но если у вас одно и тоже слово может встречаться у разных пользователей то получается связка многие ко многим - используйте связку через таблицу. Так вы не будете дублировать одно и то же слово для разных пользователей. Например:
users(user_id, ...)
words(word_id, word)
users_words( user_id, word_id)
Можно добавить новую колонку в words и определить ее как PK, а на остальные две колонки наложить unique constraint. Тогда у тебя будет две таблицы со связью 1 ко многим
create or replace table USER
(
USER_ID int auto_increment primary key,
username varchar(32) not null,
constraint user_username_uindex
unique (USERNAME)
);
create or replace table WORDS
(
WORD_ID int auto_increment
primary key,
WORD varchar(32) null,
USER_ID int null,
constraint words_word_user_id_uindex
unique (WORD, USER_ID),
constraint words_user_user_id_fk
foreign key (USER_ID) references USER (USER_ID)
);
а он и не добавится.
колонка id должна быть PRIMARY KEY (id
) в USERS он не может повторяться.
если нужен контрольный в голову, то можно завести в таблице ещё ключ- уникальный по сумме двух полей -
CREATE TABLE `WORDS` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`names` VARCHAR(10) NOT NULL COLLATE 'utf8_unicode_ci',
PRIMARY KEY (`id`),
UNIQUE INDEX `Индекс 2` (`names`, `id`)
<.поскипано. >
как-то так
Виртуальный выделенный сервер (VDS) становится отличным выбором
Можно ли использовать cameraX в background services? Нашёл пример с camera2 api, но не нашёл ничего подобного для cameraX
Скажите пожалуйста, возможно ли сделать так: Положить jre в отдельную папку, в launch4j указать путь к этой папке и чтобы при запуске exe-файла jre бралась...
Использую java и jdbc для установки соединения с базой данных