I do have a problem connecting two tables on MSSQL Management studio. My goal is connect tables by foreign key and if I delete user I want 2nd table entry will be deleted automatically. I plan to use DELETE Cascade method for that.

我在MSSQL Management Studio上连接两个表时遇到问题。我的目标是通过外键连接表,如果我删除用户,我想要第二个表项将被自动删除。我计划使用DELETE Cascade方法。

User:
CREATE TABLE [dbo].[Users](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Email] [nvarchar](89) NOT NULL,
[Name] [nvarchar](25) NOT NULL,
[Midname] [nvarchar](25) NOT NULL,
[Surname] [nvarchar](25) NOT NULL,
[Phone] [varchar](15) NOT NULL,
[Country] [smallint] NOT NULL,
[Manager] [nvarchar](89) NOT NULL,
[Referrer] [nvarchar](89) NOT NULL,
[Rank] [tinyint] NOT NULL,
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED 
(
[Email] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,      ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
  ) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

Email is Primary key

电子邮件是主键

Payments:
 CREATE TABLE [dbo].[Investments](
[ID] [bigint] NOT NULL,
[Investor] [nvarchar](89) NOT NULL,
[Sum] [decimal](19, 4) NOT NULL,
[Currency] [smallint] NOT NULL,
[Credit] [decimal](19, 4) NOT NULL,
[CreditRate] [decimal](19, 4) NOT NULL,
[Rate] [tinyint] IDENTITY(1,1) NOT NULL,
[Date] [smalldatetime] NOT NULL,
[Comment] [nvarchar](max) NOT NULL,
CONSTRAINT [PK_Investments] PRIMARY KEY CLUSTERED 
(
        [ID] ASC
 )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,     ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
  ) ON [PRIMARY]

 GO

ID is Primary key

ID是主键

My FK should be like USER->PAYMENTS or PAYMENTS->USER?

我的FK应该像USER-> PAYMENTS或PAYMENTS-> USER?

When I am trying to connect User -> Payments using foregn key by Email -> Investor, it tell me such error:

当我尝试通过电子邮件 - >投资者使用foregn密钥连接用户 - >付款时,它告诉我这样的错误:

The columns in table 'Payments' do not match an existing primary key or UNIQUE constraint.

表'付款'中的列与现有主键或UNIQUE约束不匹配。

Could you please explain me where problem is? And what I am doing wrong?

你能解释一下我的问题在哪里吗?我做错了什么?

2 个解决方案

#1


3

Change your structure to:

将您的结构更改为:

CREATE TABLE [dbo].[Users](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Email] [nvarchar](89) NOT NULL,
[Name] [nvarchar](25) NOT NULL,
[Midname] [nvarchar](25) NOT NULL,
[Surname] [nvarchar](25) NOT NULL,
[Phone] [varchar](15) NOT NULL,
[Country] [smallint] NOT NULL,
[Manager] [nvarchar](89) NOT NULL,
[Referrer] [nvarchar](89) NOT NULL,
[Rank] [tinyint] NOT NULL);

ALTER TABLE [Users]
ADD CONSTRAINT PK_UsersID PRIMARY KEY (ID);

and then

接着

CREATE TABLE [dbo].[Investments](
[ID] [bigint] NOT NULL,
[UserID] [bigint] NOT NULL,
[Sum] [decimal](19, 4) NOT NULL,
[Currency] [smallint] NOT NULL,
[Credit] [decimal](19, 4) NOT NULL,
[CreditRate] [decimal](19, 4) NOT NULL,
[Rate] [tinyint] IDENTITY(1,1) NOT NULL,
[Date] [smalldatetime] NOT NULL,
[Comment] [nvarchar](max) NOT NULL);

ALTER TABLE Investments
ADD CONSTRAINT PK_InstestmentsID PRIMARY KEY (ID);

ALTER TABLE Investments
ADD CONSTRAINT FK_UsersInvestments
FOREIGN KEY (UserID)
REFERENCES Users(ID);

Then join Users.ID on Investments.UserID

然后在Investments.UserID上加入Users.ID

更多相关文章

  1. sql plus如何新建新用户
  2. Mysql 创建,授权,删除,修改用户
  3. 解决用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联
  4. 记一次无备份恢复Mysql误删用户数据
  5. MySQL root 用户密码重置
  6. Mysql5.7.10新加用户
  7. SQL查询 - 从表中查找不同的用户
  8. jsp+Mysql实现简单用户登陆
  9. DRP系统中用户增删改查(分页)Model1模式

随机推荐

  1. Android(安卓)UI设计
  2. android中的SVG图像的各个属性意义
  3. T-Mobile G3是华为的android
  4. 从源码看Android常用的数据结构 ( SDK23
  5. 《Android 手机程序设计实用教程》PDF版
  6. Android程序开发初级教程
  7. 解决类似微信聊天界面软键盘和表情框冲突
  8. Android高手进阶教程之----Android 中自
  9. Android初级之路-Android开发环境搭建
  10. Android菜单的使用Menu