我在我的数据库中创建了两个表,在两个表中同时插入值,现在我想要做的是,在第二个表中插入记录,但条件是,如果有两个相同的记录,那么我只想插入一个记录而不是重复值,第二个表中有两个字段,一个是id,另一个是分类,当用户插入两个相同的类别时,我只想插入一个条目,下面是我的代码。
public long InsertCat(String idd, String cat)
{
try
{
SQLiteDatabase db;
long rows = 0;
db = this.getWritableDatabase();
我有一个包含用户设置集的表,它有以下各列:
UserID INT
Set VARCHAR(50)
Key VARCHAR(50)
Value NVARCHAR(MAX)
TimeStamp DATETIME
UserID以及Set和Key是唯一的。因此,特定用户在一组特定设置中不能有两个相同的密钥。设置是按集合检索的,因此,如果用户请求某个集合中的某个密钥,则会下载整个集合,以便下次需要同一集合中的密钥时,不必将其转到数据库。
我是应该在所有三列(userid、set和key)上都创建一个主键,还是应该创建一个具有主键的额外字段(例如,一个名为SettingID的自动增量整数,我猜这不是个好主
我有一个定义为:
----------------------------------------
| a (VARCHAR) | b (DATE) | c (INT) |
----------------------------------------
其索引定义为:
CREATE INDEX table_index ON table (a,b);
运行以下代码时:
INSERT INTO test_table
(a,b,c)
VALUES
('test', '2017-10-06 08:00:00', 1)
$this->db->query("LOAD DATA LOCAL INFILE '".$file_path."'
INTO TABLE table1
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LIN
我想知道哪个选项更具有性能和速度:当尝试在我的数据库中插入一个新行时,我想知道其中一个值(即PK列上的值)是否已经存在于数据库中并且是一个副本。如果它存在,我什么也不做,如果它不存在,我就插入它。为了实现这一点,最好是:
使用类似于的内容查找数据库中的字段
SELECT username, email, COUNT(*)
FROM users
GROUP BY username, email
HAVING COUNT(*) > 1
看看是否有结果
只需尝试为该字段插入一个值,并查看数据库是否使用错误(键已经存在)进行响应。
谢谢