首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动增量和SQL的标识

问自动增量和SQL的标识
EN

Stack Overflow用户
提问于 2013-02-25 22:39:58
回答 2查看 420关注 0票数 1

autoincrement column in SQL database

这个链接回答了我对SQL中是否存在自动增量的疑问。

我现在的问题是这样的,

我有两个由这些类表示的表

代码语言:javascript
复制
public class A
{
   [Key]
   public int AId{get;set;}
   public int BId{get;set;}
   [ForeignKey("BId")]
   public virtual B pb{get;set;}
}

public class B
{
   [Key]
   public int BId{get;set;}
   public int AId{get;set;}
}

在初始化A类的对象时,出现了一个错误,说明在MySQL中,我可以将一个列声明为AUTO_INCREMENT,然后将表初始化为如下所示

代码语言:javascript
复制
INSERT INTO myTable(col2, col3, col4) VALUES('col2','col3','col4');

假设col1被声明为自动递增。我想用A类中的BId做一些类似的事情,这样我就不需要给它设置一个整数了。

EN

回答 2

Stack Overflow用户

发布于 2013-02-25 22:46:03

这并不是外键的工作方式。

您可以使用主键执行您所要求的操作,如果主键是标识列,SQL Server将为您设置主键。但是对于外键,你应该已经知道你想要的值了。您应该已经有一个要引用的现有B实例--或者应该在创建A之前创建它。

如果你想让外键自动递增,你并不是真的想要一个外键,你想要的是别的东西。您可能需要重新考虑您的表结构。

票数 1
EN

Stack Overflow用户

发布于 2013-02-25 22:47:23

如果BId不需要值,请在MySQL中使用NULL约束声明它,并使C#属性也可以为空:public int? BId。

如果要为BId设置默认值,可以使用DEFAULT子句声明它。

如果您想要为每个A创建一个新的B,可以使用表A上的触发器来完成。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15069501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档