标签: auto-increment

存在表后添加新ID(自动增量)的麻烦

我有一个38.000记录的表,但没有任何自动增量列ID.
现在我要添加一个ID列,我想知道会有麻烦吗?

mysql auto-increment

16
推荐指数
4
解决办法
5万
查看次数

在rails中生成自动增量字段

我有一个模型令牌,它有一个字段token_number,我需要自动递增(从1001开始),当且仅当用户不提供它.问题是,由于用户可以选择提供此字段,因此无法完全查询数据库并请求最大的token_number.我在这个论坛上找到了一个答案,但我确信必须有一个更好的方法来执行它而不是执行SQL语句?在Ruby on Rails中自动增加非主键字段

ruby-on-rails auto-increment rails-migrations

16
推荐指数
2
解决办法
2万
查看次数

尝试使用REPLACE和AUTO_INCREMENT执行LOAD DATA INFILE

我正在尝试将文件加载到MySQL数据库,主键auto_incremented,如果我找到任何重复的行,我希望更新数据.但是,REPLACE关键字仅适用于主键,它是自动生成的,所以我卡住了.

如何能够拥有一个ID为auto_increments的表,同时能够使用LOAD DATA INFILE从文件中插入/更新数据?

这是表格

CREATE TABLE  `oxygen_domain`.`TEST` (
`TEST_ID` int(11) NOT NULL AUTO_INCREMENT,
`NAME` varchar(255) NOT NULL,
`VALUE` varchar(255) DEFAULT NULL,
PRIMARY KEY (`TEST_ID`,`NAME`,`VALUE`)
) 
Run Code Online (Sandbox Code Playgroud)

这是命令

LOAD DATA LOCAL INFILE 'C:/testData.txt'
REPLACE
INTO TABLE TEST
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(NAME, VALUE);
Run Code Online (Sandbox Code Playgroud)

这是样本数据

ignored name, ignored value
name1,value1
name2,value2
name3,value3
Run Code Online (Sandbox Code Playgroud)

用上述数据多次运行上述命令后所需的结束结果是

|TEST_ID |NAME |VALUE|
1, 'name1', 'value1'
2, 'name2', 'value2'
3, 'name3', 'value3'
Run Code Online (Sandbox Code Playgroud)

mysql replace auto-increment load-data-infile

16
推荐指数
1
解决办法
2万
查看次数

MySQL从另一个表中选择时自动增加插入到表中

我有一个带有自动增量主键的表:

create table rt_table
(
  rtID int PRIMARY KEY AUTO_INCREMENT, 
  rt_user_id BIGINT,               /*user being retweeted*/
  rt_user_name varchar(70),        /*user name of rt_user_id*/
  source_user_id BIGINT,           /*user tweeting rt_user_id*/
  source_user_name varchar(70),    /*user name of source_user_id*/
  tweet_id BIGINT,                 /*fk to table tweets*/

  FOREIGN KEY (tweet_id) references tweets(tweet_id)
);
Run Code Online (Sandbox Code Playgroud)

我希望从另一个表的部分填充此表:

insert into rt_table 
select rt_user_id, (select user_name from users u where u.user_id = t.rt_user_id),
       source_user_id, (select user_name from users u where u.user_id = t.source_user_id),
       tweet_id
  from tweets t
 where rt_user_id != -1;
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,表示列数不匹配,这是因为主键(这是一个自动递增的值,因此不需要设置).我该如何解决这个问题?

mysql select insert auto-increment

16
推荐指数
2
解决办法
3万
查看次数

将自动增量添加回Rails中的主键列

我错误地从表格的id字段中删除了自动增量选项.谁能告诉我如何通过迁移重新插入自动增量选项?

activerecord ruby-on-rails auto-increment rails-migrations

15
推荐指数
2
解决办法
2万
查看次数

使用实体框架自动编号

我想遍历一组对象并将它们全部添加到表中.目标表具有自动增量字段.如果我添加一个对象没有问题.如果我添加两个主键为零的对象,则实体框架失败.我可以手动指定主键,但尝试EF的重点是让生活变得更轻松而不是更复杂.这是代码,接收的异常如下.

foreach (Contact contact in contacts)
{               
    Instructor instructor = InstructorFromContact(contact);             
    context.AddToInstructors(instructor);               
}

try
{                   
    context.SaveChanges();                  
}
catch (Exception ex)
{
    Console.WriteLine(ex.ToString());
}
Run Code Online (Sandbox Code Playgroud)

错误是:

System.InvalidOperationException:已成功提交对数据库的更改,但更新对象上下文时发生错误.ObjectContext可能处于不一致状态.内部异常消息:AcceptChanges无法继续,因为对象的键值与ObjectStateManager中的另一个对象冲突.在调用AcceptChanges之前,请确保键值是唯一的.在System.Data.Objects.ObjectContext.SaveChanges(SaveOptions选项)
的System.Data.Objects.ObjectContext.SaveChanges()在DataMigration.Program.CopyInstructors()在C:\ Projects\DataMigration\Program.cs:第52行

c# entity-framework exception auto-increment

15
推荐指数
3
解决办法
4万
查看次数

PostgreSQL:基于多列唯一约束的自动增量

我的一个表有以下定义:

CREATE TABLE incidents
(
  id serial NOT NULL,
  report integer NOT NULL,
  year integer NOT NULL,
  month integer NOT NULL,
  number integer NOT NULL, -- Report serial number for this period
  ...
  CONSTRAINT PRIMARY KEY (id),
  CONSTRAINT UNIQUE (report, year, month, number)
);
Run Code Online (Sandbox Code Playgroud)

你会如何去递增number列中为每次report,yearmonth 独立?我想避免创建用于每个序列或表(report,year,month)集.

如果PostgreSQL支持 MySQL的MyISAM表中" 在多列索引中的辅助列上 "递增,那将是很好的,但我在手册中找不到这样的功能.

一个明显的解决方案是选择 + 1中的当前值,但这对于并发会话显然是不安全的.也许预插入触发器可以工作,但它们是否保证是非并发的?

另请注意,我正在单独插入事件,因此我不能像其他地方一样使用generate_series.

postgresql auto-increment

15
推荐指数
1
解决办法
6593
查看次数

正则表达式记事本每行增加数字

我将使用Notepad ++在每行的开头逐步添加数字.这不是一个开始.但是,就像

  when ID = '1' then data
  when ID = '2' then data
  when ID = '3' then data
  .
  .
  .
  .
  when ID = '700' then
Run Code Online (Sandbox Code Playgroud)

有没有办法可以通过替换任何表达式来增加这些数字,或者是否有任何内置的记事本功能.

谢谢

regex notepad++ auto-increment

15
推荐指数
1
解决办法
2万
查看次数

插入选择时,Mysql自动增量跳转

我正在测试insert-select查询并注意到一个奇怪的结果.

CREATE TABLE `test` (
  `cnt` int(11) NOT NULL AUTO_INCREMENT,
  `a` int(11) DEFAULT NULL,
  `b` int(11) DEFAULT NULL,
  PRIMARY KEY (`cnt`)
)

CREATE TABLE `test_current` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) DEFAULT NULL
)
Run Code Online (Sandbox Code Playgroud)

首先,我创建了两个表,并在test_current中插入一些值

mysql> insert into test_current (a,b) values (1,1),(2,2);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0
Run Code Online (Sandbox Code Playgroud)

我做了这个查询

mysql> INSERT INTO test (a,b) SELECT a,b FROM test_current;
Query OK, 2 rows affected, 1 warning (0.00 sec)
Records: 2  Duplicates: 0  Warnings: …
Run Code Online (Sandbox Code Playgroud)

mysql auto-increment

14
推荐指数
1
解决办法
7048
查看次数

TRANSACTION,COMMIT和ROLLBACK上的MySQL自动递增列

当使用MySQL START TRANSACTION并由MySQL做出回滚决定时 - 如果一个表有一个AUTO_INCREMENT列 - 在回滚期间列是否会减少?

还是应该呢?

我遇到了一些问题,其中事务数据正在被正确回滚 - 但看起来表是自动递增的并且在回滚中没有减少.


# BOTH TABLES START OUT EMPTY // TABLE1 ID is **auto_increment** 

START TRANSACTION;

INSERT INTO `TABLE1` (`ID` ,`NAME`) VALUES (NULL , 'Ted');  # MySQL TABLE1 **ID** is Auto incremented to 1 

INSERT INTO `TABLE2` (`ID` ,`WRONGVALUE`) VALUES (NULL , 'some value');  # error. This TRANSACTION will not succeed 

COMMIT;  # Because of the error - this TRANSACTION is now rolled back and Ted is NOT added
Run Code Online (Sandbox Code Playgroud)


因为MySQL会自动增加第一个表上的ID - 无论事务成功还是失败 …

mysql transactions auto-increment decrement

14
推荐指数
1
解决办法
7394
查看次数