sqlite 字段默认值等于id值

bamboo2000 2010-01-29 03:34:49
sqlite 中
CREATE TABLE table1 (
id integer primary key autoincrement,
name text default '',
[index] integer default ROWID
)

有没有类似的功能,让 index 的值默认等于id,比如
insert into table1 (id,name) values (null,'第一行');
insert into table1 (id,name) values (null,'第二行');

我希望结果是
id name index
1 第一行 1
2 第二行 2

能实现吗?
...全文
764 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bamboo2000 2010-01-29
  • 打赏
  • 举报
回复
考虑到有可能换数据库的情况,还是用程序实现了!
ACMAIN_CHM 2010-01-29
  • 打赏
  • 举报
回复
SQLite 中,只能用触发器来实现这种功能。
bamboo2000 2010-01-29
  • 打赏
  • 举报
回复
ROWID 试过,不行
wwwwb 2010-01-29
  • 打赏
  • 举报
回复
6楼的方法有误,只有用TRIGGER
microsofttyc 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wwwwb 的回复:]
测试可以这样 :
insert into table1c  values (null,'第一行',(select rowid from table1c));
[/Quote]
values中可以用到子查询吗,好像不行吧
ACMAIN_CHM 2010-01-29
  • 打赏
  • 举报
回复
只能用触发器。 没有办法
wwwwb 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 microsofttyc 的回复:]
引用 3 楼 wwwwb 的回复:
呵呵,不能,测试了一下不行

嗯,知道了,果然是不行的
[/Quote]
sorry,刚刚测试,用ROWID可行
wwwwb 2010-01-29
  • 打赏
  • 举报
回复
测试可以这样 :
insert into table1c values (null,'第一行',(select rowid from table1c));
microsofttyc 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wwwwb 的回复:]
呵呵,不能,测试了一下不行
[/Quote]
嗯,知道了,果然是不行的
wwwwb 2010-01-29
  • 打赏
  • 举报
回复
呵呵,不能,测试了一下不行
microsofttyc 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wwwwb 的回复:]
CREATE TABLE table1 (
id integer primary key autoincrement,
name text default '',
[index] integer 
)

trigger:
Begin Transaction;
Drop Trigger If Exists MAIN.[dd];
Create  Trigger MAIN.[dd] AFTER INSERT On [table1b] FOR EACH ROW
begin
update table1b set 'index'=id  where id=new.id    ;
end;
Commit Transaction;

insert into table1 (id,name) values (null,'第一行');
insert into table1 (id,name) values (null,'第二行');
[/Quote]

一定要用到触发器和存储过程吗?不能直接设置成默认值吗
wwwwb 2010-01-29
  • 打赏
  • 举报
回复
CREATE TABLE table1 (
id integer primary key autoincrement,
name text default '',
[index] integer
)

trigger:
Begin Transaction;
Drop Trigger If Exists MAIN.[dd];
Create Trigger MAIN.[dd] AFTER INSERT On [table1b] FOR EACH ROW
begin
update table1b set 'index'=id where id=new.id ;
end;
Commit Transaction;

insert into table1 (id,name) values (null,'第一行');
insert into table1 (id,name) values (null,'第二行');

2,208

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧