Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 表中存在重复数据_Sql_Insert - Fatal编程技术网

Sql 表中存在重复数据

Sql 表中存在重复数据,sql,insert,Sql,Insert,我读了一些已回答的问题,但它们对我没有帮助! 这是我的桌子: CREATE TABLE [dbo].[t_status]( [student_id] [nvarchar](50) NOT NULL, [les_id] [int] NOT NULL, [year_id] [int] NOT NULL, [status] [bit] NULL, [Number_of_fail] [int] NULL, 如果学生id和学生id相等,我希望防止重复数据。 我该怎么做, 我没有太多关于触发器的信息,

我读了一些已回答的问题,但它们对我没有帮助! 这是我的桌子:

  CREATE TABLE [dbo].[t_status](
[student_id] [nvarchar](50) NOT NULL,
[les_id] [int] NOT NULL,
[year_id] [int] NOT NULL,
[status] [bit] NULL,
[Number_of_fail] [int] NULL,
如果学生id和学生id相等,我希望防止重复数据。 我该怎么做, 我没有太多关于触发器的信息,但我尝试了这个,但没有成功

        ALTER TRIGGER Trigger1
ON dbo.t_status
FOR INSERT
AS

declare @stu_id nvarchar(50)
declare @les_id int
Declare @Count int 

select @stu_id=student_id,@les_id = les_id From inserted


Select @Count=Count(student_id ) From t_status where les_id=@les_id and student_id=@stu_id
group by student_id

if @Count>1
delete From t_status where student_id =@stu_id

制作复合/复合主键,有很多示例:

谷歌是你的朋友

如果学生id和学生id相等,我希望防止重复数据。怎么办,

在这两列上使用
唯一键约束
比使用触发器简单得多

ALTER TABLE t_status
ADD CONSTRAINT T_Status_Unique_StudentId_LesId UNIQUE (student_id, les_id)

触发器用于强制执行更复杂的完整性约束。

在学生id和学生id上复合主键?