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吗?
没有这样的事情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'的原因.
但是,我同意你对你的问题的评论:你最好使用不同的插入语句将数据插入学生档案(可能在插入学生的交易中).
| 归档时间: |
|
| 查看次数: |
3315 次 |
| 最近记录: |