我的脚本正在工作,我可以将我想要的值输入到MySQL数据库中。这个脚本将按计划运行,我需要ID字段增加1。我尝试了一个分配给变量和++的简单起始值1,但是这个值没有保存在内存中,而且可能有更好的方法来实现这一点。我的工作是这样的。每当这个脚本运行和更新数据库时,我都需要ID列中的值来增加1。
[void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data")
$constr = "server=127.0.0.1;port=3306;database=mydb;user id=root;password=P@ssw0rd"
$con = New-Object MySql.Data.MySqlclient.MySqlConnection
$con.ConnectionString = $constr
$con.Open()
$cmd = New-Object MySql.Data.MySqlClient.MySqlCommand
$cmd.CommandText = "INSERT INTO test VALUES(@id, @text, @date, @datetime)"
$cmd.Connection = $con
$cmd.Prepare()
$today = get-date
$cmd.Parameters("@id").Value = 1
$cmd.Parameters.AddWithValue("@id", 1)
$cmd.Parameters.AddWithValue("@text", $totalSessions.count)
$cmd.Parameters.AddWithValue("@date", $today)
$cmd.Parameters.AddWithValue("@datetime", $today)
$cmd.ExecuteNonQuery()
$con.close()输出
mysql> select * from test;
+------+------------+------------+---------------------+
| id | text | date_val | date_time |
+------+------------+------------+---------------------+
| 1 | Text Value | 2020-04-21 | 2020-04-21 15:54:54 |
| 1 | Text Value | 2020-04-21 | 2020-04-21 15:57:05 |
| 1 | Text Value | 2020-04-21 | 2020-04-21 16:02:12 |
+------+------------+------------+---------------------+
3 rows in set (0.00 sec)发布于 2020-04-22 16:59:48
如果您可以忍受可能存在空白的不断增加的id,最简单的选择是将该列声明为auto_increment。
create table test (
myid int auto_increment primary key,
mytext varchar(50),
mydate date,
mydatetime datetime
);另一方面,如果您确实想要一个严格的增量id,另一个解决方案是使用insert ... select ...查询从表本身检索最大值:
insert into test(myid, mytext, mydate, mydatetime)
select coalesce(max(myid), 0) + 1, @text, @date, @datetime
from test发布于 2020-04-22 17:03:50
您可以自行将ID列设置为自动增量,然后只需考虑添加新行,其余的将由MySQL来完成。
mysql> create table NextIdDemo
-> (
-> id int auto_increment,
-> primary key(id)
-> );如果数据库已经处于活动状态,并且不希望再次删除和创建数据库,则只需按以下方式更新该列:
ALTER TABLE your_table MODIFY COLUMN test_col_id INT auto_increment如果需要更多信息,请检查这个例子。
https://stackoverflow.com/questions/61370647
复制相似问题