【问题标题】:Cascading delete rows from multiple tables in SQL级联删除SQL中多个表的行
【发布时间】:2014-05-26 14:13:02
【问题描述】:

我有两个结构如下的表:

  • 身份证
  • 姓名

  • 身份证
  • 人员标识
  • 序列

还有一些数据:

1   name1
2   name2
3   name3

1   1   3
2   1   1
3   1   2
4   2   1

Class 表可以包含与Person 中的一行相关的多行。来自Class 表的PersonIdPerson 表中Id 的外键。我想用Id 1 删除与Person 相关的数据,因此使用一个查询从Class 中删除3 行,并从Person 中删除1 行。

如何在 SQL 中做到这一点?

【问题讨论】:

标签: sql sql-server cascading-deletes


【解决方案1】:

试试这个:

CREATE TABLE [dbo].[Class](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [PersonId] [int] NULL,
    [Sequence] [int] NULL,
 CONSTRAINT [PK_Class] 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
/****** Object:  Table [dbo].[Person]    Script Date: 26-05-2014 07:54:26 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Person](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Person] [nchar](10) NULL,
 CONSTRAINT [PK_Person] 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
ALTER TABLE [dbo].[Class]  WITH CHECK ADD  CONSTRAINT [FK_Class_Person] FOREIGN KEY([PersonId])
REFERENCES [dbo].[Person] ([Id])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Class] CHECK CONSTRAINT [FK_Class_Person]
GO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2011-06-19
    相关资源
    最近更新 更多