【发布时间】:2017-08-24 05:15:51
【问题描述】:
我使用 Microsoft SQL Server 2014 Express 作为数据库服务器。
我有以下两个表,我想在它们之间创建 PK-FK 关系。
CREATE TABLE [dbo].[Account]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[ACCOUNTNAME] [nvarchar](max) NOT NULL,
[ACCOUNTTYPE] [int] NOT NULL,
[CREATE_TIMESTAMP] [datetime] NOT NULL,
[LAST_EDIT_TIMESTAMP] [datetime] NOT NULL,
[OPENING_BALANCE] [decimal](18, 2) NOT NULL DEFAULT ((0)),
[OPENING_BALANCE_TYPE] [nvarchar](50) NULL,
CONSTRAINT [PK_dbo.Account]
PRIMARY KEY CLUSTERED ([ID] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE TABLE [dbo].[Voucher]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[VOUCHERTYPE] [nvarchar](50) NOT NULL,
[VOUCHERNO] [int] NOT NULL,
[DATE] [datetime] NOT NULL,
[AMOUNT] [decimal](18, 2) NOT NULL,
[DRPARTY] [int] NOT NULL,
[CRPARTY] [int] NOT NULL,
[DETAILS] [nvarchar](50) NOT NULL,
[ORIGIN] [nvarchar](50) NULL,
[ORIGINID] [int] NOT NULL,
[ORIGINDETAILS] [nvarchar](max) NULL,
[CREATE_TIMESTAMP] [datetime] NOT NULL DEFAULT ('1900-01-01T00:00:00.000'),
[LAST_EDIT_TIMESTAMP] [datetime] NOT NULL DEFAULT ('1900-01-01T00:00:00.000'),
[TRANSACTION_TYPE] [nvarchar](50) NULL,
CONSTRAINT [PK_dbo.Voucher]
PRIMARY KEY CLUSTERED ([ID] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
这是我通过 Microsoft SQL Server Management Studio 创建 FK 关系时遇到的错误。两张桌子都是空的。
“帐户”表保存成功
“凭证”表 - 无法创建关系“FK_Voucher_Account1”。 ALTER TABLE 语句与 FOREIGN KEY 约束“FK_Voucher_Account1”冲突。冲突发生在数据库“SKUMAR”、表“dbo.Account”、列“ID”中
我想在Account.ID -> Voucher.DRPARTY 和Account.ID -> Voucher.CRPARTY 之间创建关系,但我无法创建第二个外键关系。
我可以知道如何解决这个问题吗?
【问题讨论】:
-
错误是什么?您的表是否已经包含数据?
-
请粘贴您尝试创建外键的代码。在创建 2 个引用另一个表的 1 个 PK 的 FK 时应该没有任何问题,考虑到它们没有数据不匹配(如果有的话)。
-
这是我通过 Microsoft SQL Server Management Studio 创建 FK 关系时遇到的错误。两张桌子都是空的。 "'Account' 表成功保存 'Voucher' 表 - 无法创建关系 'FK_Voucher_Account1'。ALTER TABLE 语句与 FOREIGN KEY 约束 "FK_Voucher_Account1" 冲突。冲突发生在数据库 "SKUMAR" 表 "dbo.Account" 中, “ID”列。“
-
将您的第二个外键重命名为更好的名称。重命名您的外键,如 FK_Account_ID_Voucher_Crparty 和 FK_Account_ID_Voucher_Drparty
-
已经不一样了,第一个是
FK_Voucher_Account,第二个是FK_Voucher_Account1
标签: sql sql-server