我是C#语法的新手,当用户单击“插入”按钮时,尝试将数据插入两个不同的表中。同时,第二个插入语句需要获取第一个插入语句ID作为外键。主键ID是自动递增。
此sql在PHP中有效,但似乎不在C#中,并且我收到此抛出错误消息Npgsql.PostgresException:'55000:在此会话中尚未定义序列“ student_folio_id_seq”的当前时间”。
C#Postgres db的任何专家都可以给我一些语法错误的建议吗?很好,如果可以指定示例。
这是我的代码:
connection.Open();
NpgsqlCommand cmd = new NpgsqlCommand();
cmd.Connection = connection;
cmd.CommandText = "INSERT INTO student_folio
(f_name,l_name,ic,dob,gender,remark)VALUES(@f_name,
@l_name,@ic,@dob,@gender,@remark) RETURNING id";
cmd.CommandText = "INSERT INTO contact (s_id, address)VALUES((SELECT
currval(pg_get_serial_sequence('student_folio', 'id'))),@address) ";
cmd.CommandType = CommandType.Text;
答案 0 :(得分:1)
似乎您正在尝试使用新的dml值重新分配cmd.CommandText。试试这个。
connection.Open();
NpgsqlCommand cmd = new NpgsqlCommand();
cmd.Connection = connection;
cmd.CommandText = "INSERT INTO student_folio (f_name,l_name,ic,dob,gender,remark)VALUES(@f_name, @l_name,@ic,@dob,@gender,@remark) RETURNING id; " +
"INSERT INTO contact (s_id, address)VALUES((SELECT currval(pg_get_serial_sequence('student_folio', 'id'))),@address);";
cmd.CommandType = CommandType.Text;