多个插入的存储过程,如果失败则退出

时间:2017-03-28 10:49:09

标签: sql sql-server database stored-procedures entity-attribute-value

我有一个EAV表,对于每个单独的属性,我有一个新行,如下所示:

PersonID AtributeName AtributeValue
-----------------------------------
1         Name           John
1         Gender         Male
1         Height         170

问题在于,如果我想插入一个新的Person(ID为2,名为Jack,Male,Height 180),我还需要3个插入,并且有一个或多个更改可能会失败。我想在包含参数(ID,名称,性别,高度等)的存储过程中包含所有这些插入。

我的问题是,做这样的事情:

CREATE PROCEDURE dbo.InserSubject 
    @ID int, 
    @Name varchar(50), 
    @Gender varchar(50), 
    @Height int
AS
    INSERT INTO Subjects 
    VALUES (1, 'Name', 'John'),
           (1, 'Gender', 'Male'),  
           (1, 'Height', 170); 

如果其中一个插入失败,会失败吗?是这种数据库/表的实现吗?

1 个答案:

答案 0 :(得分:1)

$query = "SELECT file, type FROM uploads WHERE ref = '$ref'";
$statement = $pdo->prepare($query);
$statement->execute();
$row = $statement->fetch(PDO::FETCH_ASSOC);

header("Content-Type: " . $row["type"]);
echo $row["file"];