是否可以在一个 VALUES 条目中包含多个 SQL 命令?
Is is possible to have multiple SQL commands within one VALUES entry?
是否可以先插入一个不存在的条目,然后在一个 VALUES 条目中检索值?
像这样:
INSERT INTO Sections(data) VALUES(
(INSERT OR IGNORE INTO Courses(column) WHERE column='test'
SELECT id FROM Courses WHERE column='test')
)
所以首先我要插入一个值(如果不存在)到从其他 table 引用该值的部分。它可能不存在,所以我想插入它,然后我想获取新课程条目的 'id'。
有可能吗?
SQLite 是一个嵌入式数据库;它旨在与可以完成所有逻辑的 'real' 编程语言一起使用。
只要先执行SELECT,如果需要再执行INSERT。
如果id
列是INTEGER PRIMARY KEY,你可以通过last_insert_rowid:
获取它的值
using (SqlTransaction tx = connection.BeginTransaction())
{
string sql = "SELECT id FROM Courses WHERE column = @Name";
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.Parameters.Add("@Name", SqlDbType.VarChar);
cmd.Parameters["@Name"].Value = ...;
Object id = cmd.ExecuteScalar();
if (id == null)
{
sql = "INSERT INTO Courses(Name) VALUES(@Name)";
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.Parameters.Add("@Name", SqlDbType.VarChar);
cmd.Parameters["@Name"].Value = ...;
cmd.ExecuteNonQuery();
id = cmd.ExecuteScalar("SELECT last_insert_rowid()");
}
tx.Commit();
}
是否可以先插入一个不存在的条目,然后在一个 VALUES 条目中检索值?
像这样:
INSERT INTO Sections(data) VALUES(
(INSERT OR IGNORE INTO Courses(column) WHERE column='test'
SELECT id FROM Courses WHERE column='test')
)
所以首先我要插入一个值(如果不存在)到从其他 table 引用该值的部分。它可能不存在,所以我想插入它,然后我想获取新课程条目的 'id'。
有可能吗?
SQLite 是一个嵌入式数据库;它旨在与可以完成所有逻辑的 'real' 编程语言一起使用。
只要先执行SELECT,如果需要再执行INSERT。
如果id
列是INTEGER PRIMARY KEY,你可以通过last_insert_rowid:
using (SqlTransaction tx = connection.BeginTransaction())
{
string sql = "SELECT id FROM Courses WHERE column = @Name";
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.Parameters.Add("@Name", SqlDbType.VarChar);
cmd.Parameters["@Name"].Value = ...;
Object id = cmd.ExecuteScalar();
if (id == null)
{
sql = "INSERT INTO Courses(Name) VALUES(@Name)";
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.Parameters.Add("@Name", SqlDbType.VarChar);
cmd.Parameters["@Name"].Value = ...;
cmd.ExecuteNonQuery();
id = cmd.ExecuteScalar("SELECT last_insert_rowid()");
}
tx.Commit();
}