除了使用触发器之外,在oracle中实现自动增量的其他方法是什么?
我有一个MySQL数据库,其中包含一个用户表.表的主键是'userid',它被设置为自动增量字段.
我想要做的是当我在表中插入一个新用户时,使用自动增量在另一个字段'defaultidass'中的'userid'字段中创建的相同值.
例如
我想要这样的声明:
INSERT INTO users ('username','default_assignment') VALUES ('barry', value_of_auto_increment_field())
Run Code Online (Sandbox Code Playgroud)
所以我创建用户'Barry','userid'生成为16(例如),但我也希望'default_assignment'具有相同的值16.
请问有什么方法可以实现吗?
谢谢!
更新:
谢谢你的回复.default_assignment字段不是多余的.default_assigment可以引用users表中的任何用户.在创建用户时,我已经有一个表单允许选择另一个用户作为default_assignment,但是有些情况需要将它设置为同一个用户,因此我的问题.
更新:
好的,我已经尝试了更新触发器建议,但仍然无法使其工作.这是我创建的触发器:
CREATE TRIGGER default_assignment_self BEFORE INSERT ON `users`
FOR EACH ROW BEGIN
SET NEW.default_assignment = NEW.userid;
END;
Run Code Online (Sandbox Code Playgroud)
但是,插入新用户时,default_assignment始终设置为0.
如果我手动设置用户ID,则default_assignment将设置为userid.
因此,在触发生效后,自动分配生成过程显然会发生.
是否可以让非主键在每次插入时自动递增?
例如,我想要一个日志,其中每个日志条目都有一个主键(供内部使用)和一个修订号(我希望自动递增的INT值).
作为一种解决方法,这可以通过序列完成,但我相信SQLite不支持序列.
场景:
我有一个引用两个外键的表,并且对于这些外键的每个唯一组合,都有自己的auto_increment列.我需要实现一个复合键,它将使用这三个组合(一个外键和一个auto_increment列,另一个列具有非唯一值)帮助将行标识为唯一
表:
CREATE TABLE `issue_log` (
`sr_no` INT NOT NULL AUTO_INCREMENT ,
`app_id` INT NOT NULL ,
`test_id` INT NOT NULL ,
`issue_name` VARCHAR(255) NOT NULL ,
primary key (app_id, test_id,sr_no)
);
Run Code Online (Sandbox Code Playgroud)
当然,我的查询必定有问题,因为抛出的错误是:
错误1075:表定义不正确; 只能有一个自动列,必须将其定义为键
我想要实现的目标:
我有一个Application Table(以app_id作为主键),每个Application都有一组要解决的问题,每个Application都有多个测试(所以test_id col)sr_no col应该为唯一的app_id和test_id递增.
即表中的数据应如下所示:

数据库引擎是InnoDB.我希望尽可能简单地实现这一点(即如果可能的话,避免使用触发器/程序 - 这是针对其他问题的类似情况而建议的).
我正在建立一个分析系统,API调用将提供唯一的用户ID,但它不是按顺序而且太稀疏.
我需要为每个唯一用户ID提供一个自动增量ID,以在bitarray/bitset中标记分析数据点.因此,第一个用户遇到的对应于比特阵列的第一个比特,第二个用户将是比特阵列中的第二个比特,等等.
那么在MongoDB中生成增量唯一用户ID有一种可靠而快速的方法吗?
我在MySQL中有一个包含主键列的表.
让我们说:
ID | Value
1 | One
2 | Two
6 | Three
8 | Four
9 | Five
Run Code Online (Sandbox Code Playgroud)
我如何得到它:
ID | Value
1 | One
2 | Two
3 | Three
4 | Four
5 | Five
Run Code Online (Sandbox Code Playgroud)
没有其他表格.只是一个.我只是想让ID成为一个合适的系列.
有什么建议?? 一个查询也许.. :)
我正在尝试运行查询以检查列是否自动递增.我可以检查类型,默认值,它是否可以为空等等,但我无法弄清楚如何自动递增测试.这是我如何测试其他东西:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'my_table'
AND COLUMN_NAME = 'my_column'
AND DATA_TYPE = 'int'
AND COLUMN_DEFAULT IS NULL
AND IS_NULLABLE = 'NO'
--AND AUTO_INCREMENTS = 'YES'
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有AUTO_INCREMENTS可比较的列.那么如何测试列自动递增?
我正在使用Core Data,并希望将auto_increment ID设置为唯一的字段之一.是否可以使用核心数据在iOS中设置auto_increment?任何人都可以帮我一个如何实现这个的小例子?
下面是我在数据库中插入记录的代码.在第一个字段"id"中,我想将其设置为auto_increment而不是手动插入它.
- (NSManagedObjectContext *)managedObjectContext {
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication] delegate];
if ([delegate performSelector:@selector(managedObjectContext)]) {
context = [delegate managedObjectContext];
}
return context;
}
NSManagedObjectContext *context = [self managedObjectContext];
// Create a new managed object
NSManagedObject *newObj = [NSEntityDescription insertNewObjectForEntityForName:@"Users" inManagedObjectContext:context];
[newObj setValue:[NSNumber numberWithInt:userId] forKey:@"id"];
[newObj setValue:theFileName forKey:@"Name"];
Run Code Online (Sandbox Code Playgroud) 根据这篇mongodb文章,可以自动增加一个字段,我想使用计数器收集方式.
这个例子的问题是我没有成千上万的人使用mongo控制台在数据库中键入数据.相反,我试图使用猫鼬.
所以我的架构看起来像这样:
var entitySchema = mongoose.Schema({
testvalue:{type:String,default:function getNextSequence() {
console.log('what is this:',mongoose);//this is mongoose
var ret = db.counters.findAndModify({
query: { _id:'entityId' },
update: { $inc: { seq: 1 } },
new: true
}
);
return ret.seq;
}
}
});
Run Code Online (Sandbox Code Playgroud)
我在同一个数据库中创建了计数器集合,并添加了一个_id为'entityId'的页面.从这里我不知道如何使用mongoose更新该页面并获得递增的数字.
计数器没有架构,我希望它保持这种方式,因为这实际上不是应用程序使用的实体.它只应在模式中用于自动增量字段.
我正在使用Room persistent library.我要求在一个表中添加两个主键,其中一个主键应该是自动增量.我不知道实现这一目的的确切语法.下面是我的Model类:
@Entity(tableName = "newsPapers", primaryKeys =
{"news_paper_id","news_paper_name"})
public class SelectNewsModel {
private int news_paper_id;
@ColumnInfo(name = "image_url")
private String imageUrl;
@ColumnInfo(name = "news_paper_name")
private String newsPaperName;
}
Run Code Online (Sandbox Code Playgroud)
我想让"news_paper_id"自动递增.我该怎么做?
auto-increment ×10
mysql ×4
sql ×4
mongodb ×2
android ×1
android-room ×1
bitarray ×1
bitset ×1
core-data ×1
innodb ×1
insert ×1
ios ×1
javascript ×1
mongoose ×1
oracle ×1
sequences ×1
sql-server ×1
sqlite ×1
triggers ×1
xcode5 ×1