Npgsql.PostgresException:'55000:在此会话中尚未定义序列“ student_folio_id_seq”的当前时间”

时间:2019-09-11 03:01:59

标签: c# .net npgsql

我是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;

1 个答案:

答案 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;