我可以在数据库表中自动增加外键列,使其与SQL Server中主表的自动增加主键列相匹配吗?

问题描述

为我的第一个表创建语句:'users':

CREATE TABLE users 
(
    uid INT NOT NULL IDENTITY PRIMARY KEY,firstName VARCHAR(50) NOT NULL,lastName VARCHAR(50) NOT NULL,middle VARCHAR(50) NOT NULL,ssn VARCHAR(12) NOT NULL,dob DATE NOT NULL,phone VARCHAR(10) NOT NULL,email VARCHAR(255) NOT NULL
)

为第二个表创建语句:“ ds”:

CREATE TABLE ds 
(
    dsu VARCHAR(50) NOT NULL,dsp VARCHAR(50) NOT NULL,dsImage VARCHAR(50) NOT NULL,dsid INT NOT NULL,Name nvarchar(50),CONSTRAINT PK_dsid 
        PRIMARY KEY NONCLUSTERED (dsid),CONSTRAINT FK_users_uid 
        FOREIGN KEY (dsid) REFERENCES users (uid)
                ON DELETE CASCADE
                ON UPDATE CASCADE
);

一个表的uid列将随着我插入的每个新行而自动递增。我想在每个新行中设置ds表的dsid列值,以自动更新以匹配usersuid列值。

当我尝试将INSERT INTO的值放入ds表中时:

INSERT INTO ds (dsu,dsp,dsImage)
VALUES ('john.smith','1234567','Tiger')

我收到以下错误

515消息,第16级,状态2,第1行
无法将值NULL插入表'company.dbo.ds'的列'dsid'中;列不允许为空。 INSERT失败。

因此,我试图找出是否正确设置了主键和外键create语句以实现所需的结果,以及为什么会出现错误以及什至接近正确完成此任务/问题。

非常感谢您的帮助,谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)