How to do IF NOT EXISTS in SQLite
How about this?
INSERT OR IGNORE INTO EVENTTYPE (EventTypeName) VALUES 'ANI Received'
(Untested as I don't have SQLite... however this link is quite descriptive.)
Additionally, this should also work:
INSERT INTO EVENTTYPE (EventTypeName)
SELECT 'ANI Received'
WHERE NOT EXISTS (SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received');
Insert if not exists statement in SQLite
If you have a table called memos that has two columns id
and text
you should be able to do like this:
INSERT INTO memos(id,text)
SELECT 5, 'text to insert'
WHERE NOT EXISTS(SELECT 1 FROM memos WHERE id = 5 AND text = 'text to insert');
If a record already contains a row where text
is equal to 'text to insert' and id
is equal to 5, then the insert operation will be ignored.
I don't know if this will work for your particular query, but perhaps it give you a hint on how to proceed.
I would advice that you instead design your table so that no duplicates are allowed as explained in @CLs answer
below.
CREATE TABLE IF NOT EXISTS statement in SQLite
This question has some answers which may be helpful. From that question, however, this answer suggests that SQLite 3.3 and above support IF NOT EXISTS
.
Based on that question's answers, you could try selecting the COUNT of tables named 'notes' using this (slightly modified) query:
SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='notes';
You can then test the result of that query. If there were 0 results, create the table. Otherwise, don't create the table.
IF NOT EXISTS in SQLite
INSERT INTO profiles (devID, alert)
SELECT 'ff', 1
WHERE NOT EXISTS (SELECT 1 FROM profiles WHERE devID = 'ff');
SQLite CASE statement - INSERT IF NOT EXISTS
One method is to write this as a single statement:
INSERT INTO sap(id, url)
SELECT id, url
FROM (SELECT '123456' as id, 'https:/test.com' as url) t
WHERE NOT EXISTS (SELECT 1 FROM sap WHERE sap.id = t.id);
However, the correct answer is to use a unique index/constraint so the database does the checking internally:
CREATE UNIQUE INDEX unq_sap_id ON sap(id);
If you attempt to insert a duplicate value for id
, the INSERT
will fail.
How to insert if not exists, or increase if exists in SQLite?
You can use insert or replace.
I thinks this will do the trick
INSERT OR REPLACE INTO Test (Id,Val)
VALUES ( 1,
COALESCE((SELECT Val + 1 FROM Test WHERE id = 1), 1)
);
INSERT OR REPLACE INTO Test (Id,Val)
VALUES ( 2,
COALESCE((SELECT Val + 1 FROM Test WHERE id = 2), 1)
);
You just have to replace the numbers with your inputed id
Error in IF NOT EXISTS sqlite3
The IF NOT EXISTS
must come earlier, like this:
CREATE TABLE IF NOT EXISTS SCHEDULER (SNO INTEGER PRIMARY KEY AUTOINCREMENT, STRTIME TEXT, ENDTIME TEXT, MODE TEXT);
If this still doesn't work, then your SQLite version is really old (older than version 3.3.0).
Using WHERE NOT EXISTS in Sqlite returns syntax error
The syntax of the query is wrong.
You should use INSERT ... SELECT
instead of INSERT ... VALUES
:
INSERT INTO filters (serverid, type, active, action, time)
SELECT ?, ?, ?, ?, ?
WHERE NOT EXISTS(SELECT 1 FROM filters WHERE serverid = "${msg.guild.id}" AND type = "Spam")`
Related Topics
Improving Performance of Cluster Index Guid Primary Key
SQL Select to Get the First N Positive Integers
Split One Column Value into Multiple Column Values
Procedure or Function !!! Has Too Many Arguments Specified
Automate Version Number Retrieval from .Dtsx Files
Query a Database Based on Result of Query from Another Database
Autoincrement in Oracle to Already Created Table
Execute Dynamic Query with Go in SQL
Ora 00904 Error:Invalid Identifier
Access - Compare Two Tables and Update or Insert Data in First Table
Any Way to Achieve Fulltext-Like Search on Innodb
Calculate Hours Based on Business Hours in Oracle SQL
SQL Create Logon - Can't Use @Parameter as Username
Aggregate a Single Column in Query with Many Columns
Postgresql Column Not Found, But Shows in Describe