检查用户输入表中是否已存在单元格值的组合

本文关键字:单元格 存在 组合 是否 用户 输入 检查 | 更新日期: 2023-09-27 18:22:17

CI发现了与我遇到的问题类似的问题,但无法找到正确的答案。我有一个C#web表单,其中有一个允许用户输入的表。该表有3列-ccy1、ccy2和Rate。

当用户插入值时,他们会单击"保存"按钮,通过"插入表…"语句将输入的值插入SQL数据库。

但是,如果以下情况成立,当他们单击"保存"按钮时,我需要生成一条错误语句:-ccy1和ccy2的组合已经存在于表中

示例表:

ccy1 ccy2速率

欧元兑美元1.3

GBP美元1.7

现在,如果用户尝试添加第三行,其中ccy1=欧元,ccy2=美元,这应该会产生错误,因为这种组合已经存在(在表的第1行)。

所以我希望我的C#代码是这样的:

if (***combination of ccy1 and ccy2 already exists then***)
       { "ERROR MSG" }
       else
       {
       sql += "INSERT INTO table values (ccy1, ccy2, rate)"
       }

这是一条标有星星的线,在尝试了几种方法后,我无法理解。

如有任何帮助,我们将不胜感激。

谢谢,John

检查用户输入表中是否已存在单元格值的组合

        declare @exists bit = 1
        if not Exist(select 1 from Table)
        begin
             @exists = 0
              insert into TABLEX (s, s, s, s, s)
              Values (@ccy1, @ccy2, @rate, etc...)

        end
        select @exists

这将返回文件是否存在,如果不存在则将其插入。

在代码中,可以检查返回值,如果返回1,则抛出错误。

通常,您会使用数据库表上的唯一约束来执行此操作。然后,只需尝试插入即可。如果您的列组合存在,您将得到一个违反约束的异常。找出违反了哪个约束有点痛苦(如果你的桌子上有不止一个),但这是可能的。

如果你需要更多的控制,或者想更好地格式化异常,你可以按照建议进行"如果存在(从col1=…和col2=…的表中选择*)"测试(但可以返回结果变量或输出参数)。