2010-10-19 6 views
2

У меня есть случай, когда мне нужно хранить имя пользователя, адрес электронной почты и другое поле в Twitter, чтобы быть уникальным. Однако позже я могу установить только имя пользователя Twitter. Не в процессе регистрации. Как я могу справиться с этим в SQL?MySQL Set NULLABLE Уникальное поле

Вот моя текущая структура SQL:

CREATE TABLE `kios_users` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`username` varchar(32) NOT NULL, 
`password` varchar(60) NOT NULL, 
`email` varchar(100) NOT NULL, 
`no_hp` varchar(15) NOT NULL, 
`twitter_oauth_token` varchar(60) NOT NULL, 
`twitter_oauth_token_secret` varchar(60) NOT NULL, 
`twitter_username` varchar(32) NULL, 
`verify_level` enum('just_reg','hp_ok','all_ok') NOT NULL, 
PRIMARY KEY (`id`), 
UNIQUE KEY `email` (`email`), 
UNIQUE KEY `no_hp` (`no_hp`), 
UNIQUE KEY `username` (`username`), 
UNIQUE KEY `twitter_username` (`twitter_username`) 
) ENGINE=MyISAM 

С такого рода структуры, я не могу установить twitter_username опорожнить. Можете ли вы предложить мне лучшую структуру таблицы?

+3

Итак, вы уже испытали какие-либо проблемы? 'UNIQUE' может хранить' NULL'' – zerkms

ответ

4

Вы можете установить уникальное значение фиктивного типа, но это не самое лучшее. Вы можете управлять уникальностью в логике приложений, а не лучшими. Я думаю, что лучше всего использовать другую таблицу с двумя полями: id и twitter_username с уникальным ключом на twitter_username и вставьте только тогда, когда у вас есть имя пользователя Twitter. Также должно быть отношение «один к одному» на обеих колонках id.

0

Не могли бы вы разрешить NULL для ваших параметров twitter и обеспечить уникальность на уровне приложения? (То есть. В PHP/.net/что вы используете)

В качестве альтернативы, хранить информацию щебет счета в отдельной таблице, связанной с вашим идентификатором пользователя

2

вы установили twitter_username быть «NOT NULL» , Попробуйте

`twitter_username` varchar(32) NULL 
Смежные вопросы