创建三个具有相同自增主键和名称的表
Create three tables with the same auto increment primary key and name
在线找不到合适的答案。我需要创建三个表作为下面的示例,一个具有自动递增 ID 的父表将 link 到具有相同确切 ID 的两个子表(主题和评论),如果该父 ID 被删除则级联返回.
关于如何解决的任何想法?
我在谷歌上搜索过,对如何解决这个问题感到非常困惑。我在 SQL 方面有相当多的经验,但在创建表和关系方面没有。
CREATE TABLE Parent
(
ParentID INT NOT NULL IDENTITY PRIMARY KEY,
Email VARCHAR(50) NOT NULL,...
)
CREATE TABLE Subject
(
ParentID INT NOT NULL PRIMARY KEY,
Subject
)
CREATE TABLE Comment
(
ParentID INT NOT NULL PRIMARY KEY,
Comment VARCHAR(100)
)
使用一对一关系 on delete cascade
:
CREATE TABLE Parent(
ParentID INT NOT NULL IDENTITY PRIMARY KEY,
Email VARCHAR(50) NOT NULL,...
)
CREATE TABLE Subject(
ParentID INT NOT NULL PRIMARY KEY,
Subject,
CONSTRAINT fk_SubjectParentId FOREIGN KEY (ParentID)
REFERENCES Parent (ParentID) ON DELETE CASCADE
)
CREATE TABLE Comment(
ParentID INT NOT NULL PRIMARY KEY,
Comment VARCHAR(100),
CONSTRAINT fk_CommentParentId FOREIGN KEY (ParentID)
REFERENCES Parent (ParentID) ON DELETE CASCADE
)
这称为一对一关系,因为外键的两端在其 table.
中是唯一的
虽然我不得不同意 Mitch Wheat 的评论,但级联删除还是要谨慎使用。通过指定级联删除,您告诉数据库引擎在删除父记录时删除相关记录。如果您尝试删除被另一个 table 引用的记录,则没有级联删除选项只会引发错误。作为开发人员,这迫使您考虑从父 table 中删除行的副作用,并且基本上充当 "Are you sure you want to delete?" 防止不需要的删除。
在线找不到合适的答案。我需要创建三个表作为下面的示例,一个具有自动递增 ID 的父表将 link 到具有相同确切 ID 的两个子表(主题和评论),如果该父 ID 被删除则级联返回.
关于如何解决的任何想法?
我在谷歌上搜索过,对如何解决这个问题感到非常困惑。我在 SQL 方面有相当多的经验,但在创建表和关系方面没有。
CREATE TABLE Parent
(
ParentID INT NOT NULL IDENTITY PRIMARY KEY,
Email VARCHAR(50) NOT NULL,...
)
CREATE TABLE Subject
(
ParentID INT NOT NULL PRIMARY KEY,
Subject
)
CREATE TABLE Comment
(
ParentID INT NOT NULL PRIMARY KEY,
Comment VARCHAR(100)
)
使用一对一关系 on delete cascade
:
CREATE TABLE Parent(
ParentID INT NOT NULL IDENTITY PRIMARY KEY,
Email VARCHAR(50) NOT NULL,...
)
CREATE TABLE Subject(
ParentID INT NOT NULL PRIMARY KEY,
Subject,
CONSTRAINT fk_SubjectParentId FOREIGN KEY (ParentID)
REFERENCES Parent (ParentID) ON DELETE CASCADE
)
CREATE TABLE Comment(
ParentID INT NOT NULL PRIMARY KEY,
Comment VARCHAR(100),
CONSTRAINT fk_CommentParentId FOREIGN KEY (ParentID)
REFERENCES Parent (ParentID) ON DELETE CASCADE
)
这称为一对一关系,因为外键的两端在其 table.
中是唯一的虽然我不得不同意 Mitch Wheat 的评论,但级联删除还是要谨慎使用。通过指定级联删除,您告诉数据库引擎在删除父记录时删除相关记录。如果您尝试删除被另一个 table 引用的记录,则没有级联删除选项只会引发错误。作为开发人员,这迫使您考虑从父 table 中删除行的副作用,并且基本上充当 "Are you sure you want to delete?" 防止不需要的删除。