1

我有一个 mysql 数据库和一个向其中插入内容的表单。Status如果有一行等于“新建”或“重新部署”并且是相同的 $tag (这是他们输入到表单区域的内容),我想阻止添加一行

基本上,如果 $tag 已经存在且状态为“new”或“redeploy”,我想阻止人们添加条目。有点难以解释

这是我目前的查询任何帮助或想法将不胜感激。

mysql_query ("INSERT INTO Assets (`Badge`, `First Name`, `Last Name`, `Service Tag`, `Asset Tag`, `Status`, `Employee Status`, `Username`, `deleted`)
                     VALUES('$badge', '$first', '$last', '$tag', '$asset', '$status', '$estatus', '$user', '$deleted') ") or die (mysql_error());
4

1 回答 1

1

最好的方法是对表使用检查约束。这样,无论插入/更新如何进行,您的条件将始终得到执行。

http://www.w3schools.com/sql/sql_check.asp

对于这样的事情,您可能还想创建一个函数。所以你的函数看起来像:

CREATE FUNCTION CheckAssetRows(@Tag VARCHAR(50))
RETURNS INT
AS 
BEGIN
    DECLARE @NumInvalidRows INT

    SELECT @NumInvalidRows = COUNT(*) 
    FROM Asset 
    WHERE [Service Tag]=@Tag
    AND [Status] in ('New', 'Redeploy')

    RETURN @NumInvalidRows
END
GO

您的检查很容易:

ALTER TABLE ASSET
ADD CONSTRAINT chk_Tag CHECK(CheckAssetRows([Service Tag]) = 0)
于 2012-11-29T21:42:59.927 回答