当前位置: 首页 > 面试题库 >

sql触发器停止行中的重复项

方浩旷
2023-03-14
问题内容

我有一个包含多个记录的表:

  • 用户名(例如“ TOM”)
  • Question_ID(例如“ q002”)
  • 答案(例如“ D”)

我想创建一个触发器,以便没人可以两次提交相同问题的答案。它仅 是触发器

CREATE TRIGGER trigger_Check_Duplicates

ON submit_Answer

FOR INSERT
AS

IF SELECT???

PRINT 'duplicate'

raiserror('cant submit answer to same question twice')

ROLLBACK

End

问题答案:

创建触发器

CREATE TRIGGER dbo.uniqueUserQuestion 
ON dbo.submit_Answer
INSTEAD OF INSERT
AS
BEGIN
    SET NOCOUNT ON
    IF EXISTS 
    (
        SELECT 1 
        FROM dbo.submit_Answer T 
        INNER JOIN INSERTED I 
        ON T.user_name = I.user_name 
            AND T.question_id = I.question_id
    )
    BEGIN
        -- Do dupe handling here
        PRINT 'duplicate'
        raiserror('cant submit answer to same question twice')
        return
    END

    -- actually add it in
    INSERT INTO
        dbo.submit_Answer
    SELECT
        *
    FROM
        INSERTED I
END
GO


 类似资料:
  • 问题内容: 我们有一个用户表,每个用户都有一个唯一的电子邮件和用户名。我们尝试在我们的代码中执行此操作,但是我们希望确保用户不会以相同的电子邮件用户名插入(或更新)到数据库中。我添加了一个触发器,以防止插入重复的用户。 但是对于更新触发器,我不知道如何执行此操作。我在Google上找到了以下示例:http : //www.devarticles.com/c/a/SQL- Server/Using-

  • 我们安排了一个 Windows 任务来启动一些自定义代码(作为可执行文件),该代码每 15 分钟检查一次文件是否存在。 如果最终找到该文件,我们的服务会对其进行一些处理。问题是:在处理文件后,业务要求任务计划程序停止这些15分钟的检查,直到第二天。 有没有办法在Windows任务调度器中插入逻辑,一旦满足某个条件就停止运行它的触发器?或者有没有更好的方法来设计这个过程? 我们正在使用 Window

  • 问题内容: 我在Java类中具有以下内容: 我有更多需要类的类,它们具有相同的属性和相同的构造函数,但具有不同的常量。因此,在另一堂课中,我需要以下内容: 如果这是一个类,则可以使用继承来不重复构造函数中的代码(并且可能会对该属性进行获取)。为了在每次需要这种重复时不再重复自己,我该 怎么办?理想情况下,我只想为each指定常量,并保留构造函数和属性。 问题答案: 在这种情况下可能会有所帮助。鉴于

  • 问题内容: 我有一个表,其中有列,列和许多其他列 我希望列支持Unicode的最大长度可以容纳700个Unicode字符。我无法设置,因为MYSQL仅对唯一列支持最大765字节的长度,而Unicode需要3个字节,因此我需要2100字节(700 * 3)唯一列。 因此,解决方案是创建一个触发器,以防止用户插入重复项。例如,如果用户在表中插入“ ”(我们将不区分大小写),则Mysql将完全中止包含该

  • 问题内容: 使用sql Server2005。我声明了一个触发条件,该触发条件被触发为“ AFTER INSERT,UPDATE”,在此触发条件下,我使用WHILE和CURSOR在INSERTED表的行上循环。当我找到不满足特定条件的行时: 我希望触发器引发错误,并且不要插入任何触发触发器的行(甚至不包括那些已经满足我条件的行)。<-–我不知道该怎么做! 您能告诉我如何增加错误并防止插入吗? 问题

  • 问题内容: 由于MySQL忽略了检查约束,如何使用触发器来阻止插入或更新的发生? 例如: 表foo有一个称为agency的属性,并且agency属性只能是1、2、3、4或5。 还是有更好的方法来进行MySQL中的检查约束? 问题答案: 尝试SIGNAL语法-https: //dev.mysql.com/doc/refman/5.5/en/signal.html 编辑 根据Bill Karwin下面