如何阻止出现在标识列中的多个13

Gat*_*ler 9 sql

说我有下表:

Create Table Comments (
    ID Int Identity(1,1) Not Null Primary Key Clustered,
    Comment Text Not Null
)
Run Code Online (Sandbox Code Playgroud)

由于我很迷信,我怎么能阻止出现在ID列中的13的倍数?
即:跳过13,26,39等

MySQL或MSSQL中的解决方案非常感谢.

小智 6

每次13n - 1出现在序列中时,创建一个触发器以跳到下一个触发器

BradC,这是给你的.在不了解SQL Server的情况下,我将在Oracle中完成. 似乎是SQL Server中触发器的一个很好的参考

CREATE OR REPLACE TRIGGER trigname 
  AFTER INSERT ON Comments
  FOR EACH ROW 
  IF (:new.ID % 13 = 12) THEN
    -- increase the sequence
    SELECT comment_ID_sequence.NEXTVAL FROM dual;
  END IF;   
END;
Run Code Online (Sandbox Code Playgroud)

如果没有实际测试,这可能不会起作用,但是通过少量的试验和错误,您可以使其正常工作.Oracle根本没有绑定到表的序列对象,如果需要,可以整天颠倒序列,而不必触及表.我不知道SQL Server中是否属实.