【问题标题】:How to reference a UNIQUEIDENTIFIER DEFAULT NEWID() Column [closed]如何引用 UNIQUEIDENTIFIER DEFAULT NEWID() 列
【发布时间】:2021-02-09 11:02:55
【问题描述】:

我正在尝试引用 uniqueidentifier 默认 newid() 列,但它在第 11 行给我一个错误:引用的表没有主键或候选键。

CREATE TABLE tblPhoneTypes (
 PhoneTypeID UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID(),
 PhoneTypeDescription VARCHAR (50) NOT NULL,
 PhoneTypeIsActive BIT NOT NULL,
 UpdateDate DATETIME)
    
    
CREATE TABLE tblPhones(
PhoneID UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID(),
PhoneNumber INT NOT NULL,
PhoneTypeIDFK UNIQUEIDENTIFIER NOT NULL FOREIGN KEY REFERENCES
**tblPhoneTypes**(PhoneTypeID), //ErrorLine
PhoneIsActive BIT NOT NULL,
UpdateDate DATETIME NOT NULL )

【问题讨论】:

  • 您没有在tblPhoneTypes 上声明主键,如错误消息所述。

标签: c# sql sql-server database sql-function


【解决方案1】:

只需添加主键约束:

CREATE TABLE tblPhoneTypes (
 PhoneTypeID UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWID(),
 PhoneTypeDescription VARCHAR (50) NOT NULL,
 PhoneTypeIsActive BIT NOT NULL,
 UpdateDate DATETIME)

对于第二张桌子:

CREATE TABLE tblPhones(
PhoneID UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWID(),
PhoneNumber INT NOT NULL,
PhoneTypeID UNIQUEIDENTIFIER FOREIGN KEY REFERENCES tblPhoneTypes(PhoneTypeID),
PhoneIsActive BIT NOT NULL,
UpdateDate DATETIME NOT NULL )

【讨论】:

  • @Samkelo.N 我更新了答案
  • 非常感谢@Sandra
  • 嘿@Sandra 你是怎么让它看起来像这样的。
  • @Samkelo.N 你这样说是什么意思?
猜你喜欢
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
  • 2020-09-25
  • 1970-01-01
  • 2013-07-18
相关资源
最近更新 更多