我想知道如何创建存储过程来插入这样的数据:
CREATE PROCEDURE InsertActor
@fname VARCHAR(15),
@sname VARCHAR(20),
@age INT = NULL,
@gender VARCHAR(6) = NULL
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO Actor (fname, sname, age, gender)
VALUES (@fname, @sname, @age, @gender)
END;
但是我对重复日期有疑问,我可以添加10次相同的演员。你能帮我吗?
答案 0 :(得分:0)
在开始时添加此内容即可完成所需的操作:
IF EXISTS(SELECT * FROM Actors WHERE fname = @fname AND sname = @sname)
RETURN;
或者,如果您喜欢这种方式,则可以执行更复杂的插入操作:
;WITH ToInsert AS
(
SELECT @fname AS fname, @sname AS sname, @age AS age, @gender AS gender
)
INSERT INTO Actors
(fname, sname, age, gender)
SELECT I.fname, I.sname, I.age, I.gender FROM Actors A RIGHT JOIN ToInsert I ON A.fname = I.fname AND A.sname = I.sname
WHERE T.fname IS NULL
答案 1 :(得分:0)
IF Not EXISTS(SELECT 1 FROM Actors WHERE fname = @fname AND sname = @sname and age=@age and gender=@gender)
INSERT INTO
Actor(
fname,
sname,
age,
gender
)
VALUES(
@fname,
@sname,
@age,
@gender)
或者,您可以将不想重复的数据组合设置为“唯一”或“主键”,并且您的代码将引发异常。 然后您可以处理该异常。