使用C#和MySQL ADO.NET连接器,我使用MySqlDataAdapter和MySqlCommandBuilder来更新表。
是否可以暂时强制使用autoinc字段?
DataRow row = ...
row["Id"] = 90; // force autoinc value
using (MySqlDataAdapter adapter = ...)
{
MySqlCommandBuilder builder = new MySqlCommandBuilder(adapter);
int result = adapter.Update(new DataRow[] { row });
// The inserted ID is 20 and not 90...
答案 0 :(得分:0)
是的,你可以,只要你在你提供的代码示例中明确指定值,它就可以工作。当然,如果指定了重复值,它将失败。
如果省略了值或值为NULL或0或DEFAULT,则自动增量仅应用于插入。
答案 1 :(得分:0)
@ A.Baudouin我想你想说"不幸的是,正如你在上面的例子中所看到的,它确实不工作"!你有没有找到解决方案?我有完全相同的问题,但发现如果你使用MySql Workbench修改值,它的工作正常。所有Workbench都是正常的UPDATE
命令,因此我猜这是MySqlAdapter
的问题,或者可能是"功能"!我最终直接更新了数据库,如:
MySqlHelper.ExecuteNonQuery(myConnection, "UPDATE MyTable SET Id = 90 WHERE Id = 7", null);
(或者你想用WHERE识别正确的行)。这很好用。