Я не совсем уверен, почему следующее консольное приложение не дает ожидаемого поведения для last_insert_id (). Я читал, что last_insert_id () возвращает последнее значение auto_incremented для конкретного соединения, но в этом коде одинаковый результат возвращается для обоих соединений. Может кто-нибудь объяснить, где я ошибся?
static void Main(string[] args)
{
string ConnectionString = "server=XXXX;database=XXXX;username=XXXX;password=XXXX;pooling=true;max pool size=100;min pool size=0";
MySqlConnection conn1 = new MySqlConnection(ConnectionString);
MySqlConnection conn2 = new MySqlConnection(ConnectionString);
MySqlCommand command1 = new MySqlCommand();
MySqlCommand command2 = new MySqlCommand();
command1.Connection = conn1;
command2.Connection = conn1;
StringBuilder createTableCommandText = new StringBuilder();
createTableCommandText.Append("Create Table TestTable (");
createTableCommandText.Append("Id INT NOT NULL AUTO_INCREMENT, ");
createTableCommandText.Append("str VARCHAR(20) NOT NULL, ");
createTableCommandText.Append("PRIMARY KEY (Id));");
StringBuilder insertCommandText = new StringBuilder();
insertCommandText.Append("INSERT INTO TestTable (str) VALUES ('what is the dilleo?');");
StringBuilder getLastInsertId = new StringBuilder();
getLastInsertId.Append("SELECT LAST_INSERT_ID();");
conn1.Open();
conn2.Open();
command1.CommandText = createTableCommandText.ToString();
command1.ExecuteNonQuery();
command1.CommandText = insertCommandText.ToString();
command2.CommandText = insertCommandText.ToString();
command1.ExecuteNonQuery();
command2.ExecuteNonQuery();
command1.CommandText = getLastInsertId.ToString();
Console.WriteLine("Command 1: {0}", command1.ExecuteScalar().ToString());
command2.CommandText = getLastInsertId.ToString();
Console.WriteLine("Command 2: {0}", command2.ExecuteScalar().ToString());
conn1.Close();
conn2.Close();
Console.ReadLine();
}
Я знаю, что этого не происходит из-за объединения в строку подключения вверху, поскольку я попытался запустить программу без этой части строки, и у меня все еще были одинаковые результаты (т. Е. Что и команда 1, и команда 2 отображал то же значение для last_insert_id ()). Любые идеи приветствуются!
Большое спасибо,
Andrew