当前位置: 首页 > 知识库问答 >
问题:

如果表中已有可用的记录,如何创建外键?

弓玉书
2023-03-14
  • 我正在使用phpMyAdmin
  • 我已经创建了2个表:表1和表2。
  • 表1(id)中的
  • 是主键,我忘记在表2中创建外键,而是添加了表2上的所有记录。

问题:

如果表2中没有记录,那么我可以创建外键,但是如果有记录,我们如何创建外键。

我必须在表2中创建外键。我尝试了下面的查询

ALTER TABLE Table2 
ADD CONSTRAINT FK_User_id
FOREIGN KEY(User_id) REFERENCES Table1(Id)

我在phpMyadmin中出错

共有1个答案

冯曾笑
2023-03-14

第一步,

ALTER TABLE Table2 
ADD User_id1 int

第二步,

ALTER TABLE Table2 
ADD CONSTRAINT FK_User_id1
FOREIGN KEY(User_id1) REFERENCES Table1(Id)

第三步,

update Table2 set User_id1 =User_id
select [user_id] from table2 A
where not exists(select id from table1 B where b.[user_id]=a.id)

遗憾的是,你现在不能创建FK。你仍然可以在表2中创建替代触发器

从性能上看,两者是相同的。

 类似资料:
  • 问题内容: 我是新手,似乎无法工作 可以在等程序中实现。当我尝试在程序中运行此语句时,出现了。 我在文档页面中检查了Derby Db Create Statements ,但是找不到这样的选择。 问题答案: 创建表,捕获并检查SQL状态代码。 完整的错误代码列表可以在这里 找到, 但我找不到 ;大概是 。 您需要的代码是。 只需运行一次代码并打印错误代码。不要忘记添加测试以确保代码有效。这样,您可

  • 问题内容: 我正在看一个问题:从SQLite表获取随机值,这使我想知道是否可以使用SQL复制记录。更具体地说,有没有一种可以转换这些记录的构造: 进入: 后者中的和记录的计数与前一组记录中的对应值匹配。 可以用SQL完成吗?如果是这样,怎么办? 编辑: Lucero问什么SQL方言?任何真的,但理想情况下,最不可知论的方法都是最好的。 另一个编辑: 是否可以在sqlite中的单个SQL语句中完成?

  • 如果目录不存在,下面的方法是正确的创建方法吗? 它应该拥有脚本的完全权限,并且可以被其他人读取。

  • 我正在使用JDBC和MySQL。 我可以创建文本字段并将其内容作为记录输入到MySQL表中(然后填充相应的javafx TableView)。 我想知道用户是否可以通过点击TableView单元格直接向TableView添加新记录。 这样做会是一个好的做法吗?TableView显示销售发票的详细信息,如项目名称、销售数量、价格等。

  • 问题内容: 我很沮丧,我不知道该怎么做。 基本上,我只想创建一个表,但是如果它存在,则需要将其删除并重新创建,而不是将其截断,但是如果不存在,则可以创建它。 有人可以帮忙吗? 谢谢乔治 问题答案: 放在tablename您的发言之前。 该语句将删除该表(如果存在),但如果不存在则不会引发错误。

  • 问题内容: 如果目录不存在,这是创建目录的正确方法吗?它应该对该脚本具有完全的权限,并且可以被其他人读取。 问题答案: