首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用powershell将MySQL Id列值增加1

如何用powershell将MySQL Id列值增加1
EN

Stack Overflow用户
提问于 2020-04-22 16:52:37
回答 2查看 544关注 0票数 0

我的脚本正在工作,我可以将我想要的值输入到MySQL数据库中。这个脚本将按计划运行,我需要ID字段增加1。我尝试了一个分配给变量和++的简单起始值1,但是这个值没有保存在内存中,而且可能有更好的方法来实现这一点。我的工作是这样的。每当这个脚本运行和更新数据库时,我都需要ID列中的值来增加1。

代码语言:javascript
复制
[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()

输出

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-22 16:59:48

如果您可以忍受可能存在空白的不断增加的id,最简单的选择是将该列声明为auto_increment

代码语言:javascript
复制
create table test (
    myid int auto_increment primary key,
    mytext varchar(50),
    mydate date,
    mydatetime datetime
);

另一方面,如果您确实想要一个严格的增量id,另一个解决方案是使用insert ... select ...查询从表本身检索最大值:

代码语言:javascript
复制
insert into test(myid, mytext, mydate, mydatetime)
select coalesce(max(myid), 0) + 1, @text, @date, @datetime
from test
票数 1
EN

Stack Overflow用户

发布于 2020-04-22 17:03:50

您可以自行将ID列设置为自动增量,然后只需考虑添加新行,其余的将由MySQL来完成。

代码语言:javascript
复制
mysql> create table NextIdDemo
   -> (
   -> id int auto_increment,
   -> primary key(id)
   -> );

如果数据库已经处于活动状态,并且不希望再次删除和创建数据库,则只需按以下方式更新该列:

代码语言:javascript
复制
ALTER TABLE your_table MODIFY COLUMN test_col_id INT auto_increment

如果需要更多信息,请检查这个例子

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61370647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档