-1

如何避免在 ms sql 中多次插入同一行?

     SqlCommand cmd1 = new SqlCommand("insert student_vs_testsession_details(student_id,testsession_id,testsession_status,test_type) values('" + id + "','" + Test + "','','" + s_testtype + "') where  NOT EXISTS(select student_id from student_vs_testsession_details where testsession_id='" + lb_testid.Text + "' and student_id='"+id+"')", con);
4

1 回答 1

1

你应该做(student_id, testsession_id)表的主键,那么就不可能为这对属性插入两个具有相同值的元组。有关详细信息,请参阅SQL 服务器参考。我相信语法应该是这样的:

CREATE TABLE student_vs_testsession_details (
    student_id integer,
    testsession_id integer,
    ...,
    CONSTRAINT MY_PRIMARY_KEY_CONSTRAINT
           PRIMARY KEY CLUSTERED (student_id, testsession_id)
           WITH (IGNORE_DUP_KEY = ON)
);

或者,您可以使用语句添加主键约束。ALTER TABLE

[编辑]

如果您不想使用主键约束,您可以创建一个UNIQUE约束(请参阅参考资料),如下所示:

CREATE TABLE student_vs_testsession_details (
    student_id integer,
    testsession_id integer,
    something_else varchar(10),
    CONSTRAINT MY_UNIQUE_CONSTRAINT
           UNIQUE (student_id, testsession_id)
);

或者您添加约束:

ALTER TABLE student_vs_testsession_details ADD CONSTRAINT MY_UNIQUE_CONSTRAINT
    UNIQUE (student_id, testsession_id); 
于 2013-05-30T07:32:09.533 回答