代码之家  ›  专栏  ›  技术社区  ›  ariefbayu

MySQL Set NULLABLE Unique字段

  •  2
  • ariefbayu  · 技术社区  · 14 年前

    我有一个案例,我需要存储twitter用户名、电子邮件和一些其他字段以保持唯一性。不过,我只能在以后设置twitter用户名。不在注册过程中。我如何在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 回复  |  直到 14 年前
        1
  •  4
  •   Xint0    14 年前

    您可以设置一个伪唯一值,但不是最佳值。 你可以管理应用程序逻辑中的唯一性,而不是最好的。 id twitter_username twitter用户名 只有当你有twitter用户名时才插入。 身份证件 柱。

        2
  •  2
  •   Phil    14 年前

    `twitter_username` varchar(32) NULL
    
        3
  •  0
  •   Ben    14 年前

    你能不能不允许你的twitter参数为空,并在应用程序级别强制实现唯一性?(例如,在php/.net/whatever中)

    或者,将twitter帐户详细信息存储在与用户id链接的单独表中

    推荐文章