【问题标题】:How to add more data to a table that already has primary key?如何向已有主键的表中添加更多数据?
【发布时间】:2012-09-18 01:18:12
【问题描述】:

我是 Mysql 的新手,所以放轻松。原谅在这方面缺乏知识。 但是我到处搜索,这很愚蠢,我不能只找到这个简单的答案。正在尝试制作一个有趣的应用程序来推广页面、赚取积分、为 fbook blah blah 做 PPC 类型的广告......

我目前有一个包含用户数据的 {table1}。 用户识别码, 名称, 姓名, 添加日期

table2 用于提交用户链接以使广告返回页面, 它只有 主要来自 UID 和 1 col 现在可以添加链接。 使用主键,我想要用户名或 uid,但必须能够向现有主键添加更多内容,以便我可以调用用户和所有链接。我可以这样添加,但当然必须删除自己才能在表格中添加更多内容......

$query = "INSERT INTO {$table} VALUES ('{$userid}', '{$user_link}')";
mysql_query($query) or die('Error updating database');

然后,说他们稍后再添加一个

if new submission check existing then 
add new column to existing uid... link#2=http://

我错过了什么。甚至很难说出这个问题,这就是为什么我把它放在这里作为搜索结果的原因!帮助!

【问题讨论】:

    标签: mysql database alter-table


    【解决方案1】:

    您的表在 UID 上不能有数据库主键。根据定义,作为主键的 UID 必须是唯一的。所以要么你需要。

    • COMBINED KEY UID & USER_LINK(ORACLE 思维)
    • 根本没有钥匙(它可以工作;但是你可以有重复的)
    • 为每条记录加 1 的通用 AutoNum 键(MSFT 思维)

    当您说某物是主键时,您的意思是该值永远不会为空,并且在表中始终是唯一的。你必须小心这个;你认为独特的东西,实际上并非如此。

    在这种情况下,UNIQUE 键是使用用户链接定义的,同一用户不需要拥有相同的链接(对吗?),因此您可以在两者之间创建一个组合键。

    【讨论】:

    • 太棒了,终于有人可以帮我把这些东西摆在桌子上了。我会做一些谷歌搜索,看看我想出了什么。我会继续发布...再次感谢!
    • 组合对于需要它的人来说是最简单的。去 PHPmyAdmin 检查了我的用户 id 和链接列,点击了唯一索引,所以他们不能在同一个帐户上拥有相同的链接......现在完美!
    【解决方案2】:

    删除 table2 上的 PRIMARY KEY,根据定义,它是唯一的。使用常规索引作为 FOREIGN KEY 返回 table11。

    【讨论】:

    • 等等,table2中是否只允许用户有一个条目?如果是这样,您将需要使用INSERT...ON DUPLICATE KEY UPDATE...。很抱歉我之前错过了。
    • 如果您的意思是“没有重复链接”,那么您需要在 table2 上的 (uid, link) 上有一个唯一索引。该表中没有主键。
    • 好的,我想我明白了...这就是我所做的 打开 PHPMyAdmin; 1.) 在 uid 上单击 table1 的主要 2.) 转到 table2 单击索引 uid 3.) 在 table2 上同时选择 uid+链接单击唯一 现在它似乎工作完美,这是优化的吗?
    • 如果它在 table2 上创建了两个索引,那就太过分了。仅通过uid查找时可以使用复合(uid,链接)。听起来你已经准备好了!
    • 您正确的 2 个索引已创建,已更新以删除索引重新添加的唯一复合。谢谢你的精彩!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2022-11-15
    • 2020-06-16
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多