如何使用SQL Server设置"自动插入"外键值?

0 sql-server foreign-keys primary-key

我创建了两个表,并在它们之间创建了一个关系.

students:

create table students
(
    [StudentId] NVARCHAR(50) NOT NULL PRIMARY KEY,
    [Name] NVARCHAR(50) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

studentprofile:

create table studentprofile
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY(1, 1),
    [StudentId] NVARCHAR(50) NOT NULL,
    [Address] NVARCHAR(50) NOT NULL,
);
Run Code Online (Sandbox Code Playgroud)

和关系:

alter table studentprofile
add constraint students_studentprofile_FK 
    foreign key (StudentId) 
    references students(StudentId) 
        on delete cascade on update cascade
Run Code Online (Sandbox Code Playgroud)

但是,当我写这行时:

insert into students values('110111', 'Marik')
Run Code Online (Sandbox Code Playgroud)

StudentId(表中studentprofile)的值未自动更新.为什么?

你能告诉我如何设置StudentId(在表格中studentprofile)的值可以在我插入表格时自动插入students吗?

Zoh*_*led 6

没有这样的事情insert cascade.
你可以通过在students表上使用触发器插入来实现这样的事情,在表中插入默认值(或空值)studentprofile:

CREATE TRIGGER students_insert ON students AFTER INSERT
AS
    INSERT INTO studentprofile(StudentId, Address)
    SELECT StudentId, 'NO ADDRESS'
    FROM inserted
Run Code Online (Sandbox Code Playgroud)

请注意,您的地址列被定义为非空并且没有默认值,这就是我使用硬编码'NO ADDRESS'的原因.

但是,我同意你对你的问题的评论:你最好使用不同的插入语句将数据插入学生档案(可能在插入学生的交易中).