是否可以在一个 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();
}