【问题标题】:ON CONFLICT IGNORE - How to insert data into a dupes table if there is a conflict instead of ignoringON CONFLICT IGNORE - 如果存在冲突而不是忽略,如何将数据插入到欺骗表中
【发布时间】:2013-07-25 02:05:52
【问题描述】:

我有这个问题:

 @db.execute("CREATE TABLE IF NOT EXISTS programs(programId INTEGER PRIMARY KEY NOT NULL 
     AUTOINCREMENT, programName TEXT NOT NULL, episodeName TEXT, UNIQUE(programName, 
     episodeName) ON CONFLICT IGNORE)")

如果我的任何一个表中存在冲突,我不想忽略这一点,而是将数据插入“冲突”表中。我该如何设置这个场景?显然我必须创建冲突表,但接下来呢?

谢谢

【问题讨论】:

    标签: sql sqlite triggers constraints conflict


    【解决方案1】:

    你在找这个吗?

    表格

    CREATE TABLE programs
    (
      programId INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
      programName TEXT NOT NULL, 
      episodeName TEXT, 
      UNIQUE(programName, episodeName) ON CONFLICT IGNORE
    );
    CREATE TABLE program_dupes
    (
      programId INTEGER, 
      programName TEXT, 
      episodeName TEXT 
    );
    

    触发器

    CREATE TRIGGER tg_programs_insert
    BEFORE INSERT ON programs
    FOR EACH ROW
    BEGIN
      INSERT INTO program_dupes (programId, programName, episodeName)
      SELECT programId, NEW.programName, NEW.episodeName
        FROM programs
       WHERE programName = NEW.programName 
         AND episodeName = NEW.episodeName;
    
    END
    

    这里是SQLFiddle演示

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-09
      • 2018-12-17
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 2012-03-28
      • 2017-08-23
      • 1970-01-01
      相关资源
      最近更新 更多