Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLIte如何在列值更改时插入唯一数据_Android_Sqlite_Android Sqlite - Fatal编程技术网

Android SQLIte如何在列值更改时插入唯一数据

Android SQLIte如何在列值更改时插入唯一数据,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我正在为我的应用程序使用SQLite数据库。我的数据库中有4列-学生姓名、学生注册、学生移动、学生地址。现在我可以添加新记录,当且仅当四列值中的一列不同或所有值都不同时。如果所有列值相同,则不应生成新记录。 您能指导我解决这个问题吗?在创建数据库行时插入唯一的…每列只插入唯一的记录。在创建数据库行时插入唯一的…每列只插入唯一的记录。解决方案1:简单 将所有列定义为唯一列: 如果需要,您也可以添加学生地址 解决方案2:位复杂 将AND运算符与WHERE子句一起使用 您可以在上找到更多信息 实例:

我正在为我的应用程序使用SQLite数据库。我的数据库中有4列-学生姓名、学生注册、学生移动、学生地址。现在我可以添加新记录,当且仅当四列值中的一列不同或所有值都不同时。如果所有列值相同,则不应生成新记录。
您能指导我解决这个问题吗?

在创建数据库行时插入唯一的…每列只插入唯一的记录。

在创建数据库行时插入唯一的…每列只插入唯一的记录。

解决方案1:简单

将所有列定义为唯一列:

如果需要,您也可以添加学生地址

解决方案2:位复杂

将AND运算符与WHERE子句一起使用

您可以在上找到更多信息

实例:

打开 粘贴以下代码:

INSERT INTO demo (id,name,hint)
SELECT 4, 'jQuery', 'is a cross-platform JavaScript library designed to simplify the client-side scripting of HTML' 
WHERE NOT EXISTS(SELECT 1 FROM demo WHERE name = 'jQuery' OR hint = 'is a cross-platform JavaScript library designed to simplify the client-side scripting of HTML' ); 

SELECT * from demo
快跑

这不会插入第4条记录,如果修改WHERE子句的两个值,则将插入该记录

解决方案1:简单

将所有列定义为唯一列:

如果需要,您也可以添加学生地址

解决方案2:位复杂

将AND运算符与WHERE子句一起使用

您可以在上找到更多信息

实例:

打开 粘贴以下代码:

INSERT INTO demo (id,name,hint)
SELECT 4, 'jQuery', 'is a cross-platform JavaScript library designed to simplify the client-side scripting of HTML' 
WHERE NOT EXISTS(SELECT 1 FROM demo WHERE name = 'jQuery' OR hint = 'is a cross-platform JavaScript library designed to simplify the client-side scripting of HTML' ); 

SELECT * from demo
快跑


这不会插入第4条记录,如果修改WHERE子句的两个值,则将插入该记录

尽管将列设置为唯一,但在尝试插入新数据时,还需要解决在每个列上创建的冲突

为此,请定义解决冲突的行为:

"CREATE TABLE table (your columns here...(UNIQUE unique colums here...) ON CONFLICT REPLACE);"

尽管将列设置为唯一,但在尝试插入新数据时,还需要解决在每个列上创建的冲突

为此,请定义解决冲突的行为:

"CREATE TABLE table (your columns here...(UNIQUE unique colums here...) ON CONFLICT REPLACE);"

要强制一组列必须是唯一的,请添加唯一约束:

create table Students (
 /* ID              INTEGER PRIMARY KEY, */
    Student_Name    TEXT,
    Student_Enroll  TEXT,
    Student_Mob     TEXT,
    Student_Address TEXT,
    UNIQUE (Student_Name, Student_Enroll, Student_Mob, Student_Address)
);
仅当四列中至少有一列具有不同的值时,才允许新行

对于普通插入,尝试插入重复行将导致错误。如果只是想忽略它,请使用INSERT或ignore:

INSERT OR IGNORE INTO Students ...;

要强制一组列必须是唯一的,请添加唯一约束:

create table Students (
 /* ID              INTEGER PRIMARY KEY, */
    Student_Name    TEXT,
    Student_Enroll  TEXT,
    Student_Mob     TEXT,
    Student_Address TEXT,
    UNIQUE (Student_Name, Student_Enroll, Student_Mob, Student_Address)
);
仅当四列中至少有一列具有不同的值时,才允许新行

对于普通插入,尝试插入重复行将导致错误。如果只是想忽略它,请使用INSERT或ignore:

INSERT OR IGNORE INTO Students ...;

我将所有列设置为唯一。现在我只更改第4列,其余列将保持不变。你能告诉我,新记录是否会被插入?根据我的要求,应插入新记录。Unique有助于仅存储新记录。如果找到相同的数据,则将忽略所有我的列的唯一EDI设置。现在我只更改第4列,其余列将保持不变。你能告诉我,新记录是否会被插入?根据我的要求,应插入新记录。Unique有助于仅存储新记录。如果找到相同的数据,则将忽略第二个数据是无效的SQL。请更正此问题,或至少突出显示,以便我可以解决此问题。您不能将WHERE子句放在值之后。请参阅。感谢您指出@CL,我用实例更新了答案。第二个是无效的SQL。请更正此问题或至少突出显示,以便我可以解决它。您不能将WHERE子句放在值后。请参阅。感谢您指出@CL,我用实例更新了答案。好答案+1表示努力好答案+1表示努力