我正在从用户那里获取一条线索,并将其输入数据库的表中。但是,如果用户在已经使用的数据字段中输入值,我必须向用户抛出错误。
UPDATE Class_records SET The_number= '456' where class='mech-4B'
因此,这里通过将mech-4B下的每个记录的The_number设置为'456'来更新我的表。
我可以执行哪种查询语句,以便当另一个用户输入相同的数字456说“ cse-4B”时,查询条件应该失败?
答案 0 :(得分:0)
您可以运行查询并检查受查询影响的行数。如果运行相同的查询,则返回的行数很可能为零。如果为零,则会向用户抛出错误或期望。
if (rowCount() > 0){
//value is new
}
else {
//value is duplicated and throw error.
}
答案 1 :(得分:0)
因此您必须为其编写存储过程:
CREATE PROCEDURE UpdateXYZTableWithUniqueness
(@The_number AS INT,
@class AS NVARCHAR)
AS
BEGIN
SET NOCOUNT ON
IF ((SELECT COUNT(*)
FROM Class_records
WHERE The_number = @The_number) == 0)
BEGIN
UPDATE Class_records
SET The_number = @The_number
WHERE class = @class
END
ELSE
BEGIN
PRINT 'Already Exits'
END
END
GO
答案 2 :(得分:0)
如果使用mysql,则可以尝试在更新后添加“忽略”: “更新忽略Class_records集...”。
您可以查看这篇文章:https://chartio.com/resources/tutorials/how-to-insert-if-row-does-not-exist-upsert-in-mysql/
如果使用T-SQL,则可以尝试使用“如果不存在...”: “如果不存在(请从Class_Records中选择*,其中The_number ='456'和class ='mech-4B') 开始 UPDATE Class_records SET The_number ='456'其中class ='mech-4B' 结束”
您可以查看这篇文章:SQL Server 2008 - IF NOT EXISTS INSERT ELSE UPDATE
再见