如何针对其他领域强制执行唯一字段?

时间:2016-05-09 20:21:00

标签: java android sql sqlite

我想确保我的表中没有重复的时间戳,但后来我发现如果我只使用div可能会有问题,因为现在我的表有:

div

有没有办法在帐户ID和类别ID的上下文中将时间戳字段指定为唯一?同样,就帐户和类别而言,不应该为单个时间戳输入两个值。但是时间戳可能会在表格中多次出现,因为它与其他类别和/或帐户相对应。

1 个答案:

答案 0 :(得分:0)

你可以创建一个触发器并检查你需要的任何约束:

@Override
public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
    database.execSQL("CREATE TRIGGER UNIQUE_TIMESTAMP_TRIGGER " +
            "AFTER INSERT ON MY_TABLE FOR EACH ROW " +
            "BEGIN " +
            " SELECT RAISE(ABORT, 'Timestamp not unique') WHERE " +
            "  EXISTS(SELECT TIMESTAMP MY_TABLE T2 " +
            "   WHERE T2.TIMESTAMP = NEW.TIMESTAMP AND T2.ACCOUNT_ID = NEW.ACCOUNT_ID) " +
            "END; ");
}