检查 table 存储过程中是否已存在两个值
check if two values already exists in table stored procedure
所以我正在尝试创建一个包含两个值的存储过程,但它必须检查是否已经存在包含这两个值的行,但是如何检查?
CREATE PROCEDURE `ChangeDashboardContent`(TestSuiteCollectionId varchar(45), Project varchar(45))
BEGIN
/*Here it should check if these two values already exsists*/
IF select * from dashboard_hidden where TestSuiteCollectionId =
TestSuiteCollectionId and Project = Project then end if and do nothing because they are already there.
ELSE /*if this row doesn't exists implement it*/
INSERT INTO dashboard_hidden(`TestSuiteCollectionId`,`Project`)
VALUES (TestSuiteCollectionId, Project);
END IF;
END
如何使用 IF NOT EXISTS
CREATE PROCEDURE `ChangeDashboardContent`(TestSuiteCollectionId varchar(45), Project varchar(45))
BEGIN
/*Here it should check if these two values already exsists*/
IF NOT EXISTS (select * from dashboard_hidden where TestSuiteCollectionId =
TestSuiteCollectionId and Project = Project)
BEGIN
INSERT INTO dashboard_hidden(`TestSuiteCollectionId`,`Project`)
VALUES (TestSuiteCollectionId, Project);
END
END
对于这种情况,您可以使用 Exists 运算符
IF NOT EXISTS (SELECT 1 FROM dashboard_hidden where TestSuiteCollectionId =
TestSuiteCollectionId and Project = Project)
BEGIN
INSERT INTO dashboard_hidden(`TestSuiteCollectionId`,`Project`)
VALUES (TestSuiteCollectionId, Project);
END
以上将完成您的要求。但是,如果您的 table 中有这样的条件,因为两列应该具有唯一值,您可能会考虑添加唯一键约束。 SQL 如果两个值已经一起存在,那么将不允许任何插入,那么您不需要在存储过程中检查 If Exist。
ALTER TABLE dashboard_hidden
ADD CONSTRAINT UQ_SuiteCollection_Project UNIQUE (TestSuiteCollectionId,Project);
所以我正在尝试创建一个包含两个值的存储过程,但它必须检查是否已经存在包含这两个值的行,但是如何检查?
CREATE PROCEDURE `ChangeDashboardContent`(TestSuiteCollectionId varchar(45), Project varchar(45))
BEGIN
/*Here it should check if these two values already exsists*/
IF select * from dashboard_hidden where TestSuiteCollectionId =
TestSuiteCollectionId and Project = Project then end if and do nothing because they are already there.
ELSE /*if this row doesn't exists implement it*/
INSERT INTO dashboard_hidden(`TestSuiteCollectionId`,`Project`)
VALUES (TestSuiteCollectionId, Project);
END IF;
END
如何使用 IF NOT EXISTS
CREATE PROCEDURE `ChangeDashboardContent`(TestSuiteCollectionId varchar(45), Project varchar(45))
BEGIN
/*Here it should check if these two values already exsists*/
IF NOT EXISTS (select * from dashboard_hidden where TestSuiteCollectionId =
TestSuiteCollectionId and Project = Project)
BEGIN
INSERT INTO dashboard_hidden(`TestSuiteCollectionId`,`Project`)
VALUES (TestSuiteCollectionId, Project);
END
END
对于这种情况,您可以使用 Exists 运算符
IF NOT EXISTS (SELECT 1 FROM dashboard_hidden where TestSuiteCollectionId =
TestSuiteCollectionId and Project = Project)
BEGIN
INSERT INTO dashboard_hidden(`TestSuiteCollectionId`,`Project`)
VALUES (TestSuiteCollectionId, Project);
END
以上将完成您的要求。但是,如果您的 table 中有这样的条件,因为两列应该具有唯一值,您可能会考虑添加唯一键约束。 SQL 如果两个值已经一起存在,那么将不允许任何插入,那么您不需要在存储过程中检查 If Exist。
ALTER TABLE dashboard_hidden
ADD CONSTRAINT UQ_SuiteCollection_Project UNIQUE (TestSuiteCollectionId,Project);