佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1318|回复: 9

问题

[复制链接]
发表于 31-7-2007 04:06 PM | 显示全部楼层 |阅读模式
问题1
请问这样的 一个 SQL “ select a.X ,a.Y, b.X,b.Y from a inner join b on a.ID=b.ID"
这个是两个table join 出来的


如果用update的话,要如何同时update ?


问题2
在一个记录还没有保存前 “insert into table(field1,field2,field3) values(X,Y,Z)"
可是我们是不知道它的ID。

请问要怎样 insert record 后 同时 又得到它的ID?



环境: .net (C#.net)
DBMS: Mysql4


版主按: 建议楼主把标题注明清楚,谢谢。


[ 本帖最后由 檞寄生 于 23-8-2007 06:27 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 1-8-2007 12:55 AM | 显示全部楼层
问题一: 不能这样来 update. 一次只能 update 一个 table

问题二: 你要什么 ID??
回复

使用道具 举报

发表于 1-8-2007 09:06 AM | 显示全部楼层

回复 #1 quantum^_^ 的帖子

#1: 做两个update statement 个别update 个别的table lo...
#2: ID 应该是你的primary key 吧...全新的record, ID 是你自己定的...或者用auto generate 的funtion吧..

[ 本帖最后由 deity01 于 1-8-2007 09:16 AM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 1-8-2007 11:22 AM | 显示全部楼层
原帖由 goatstudio 于 1-8-2007 12:55 AM 发表
问题一: 不能这样来 update. 一次只能 update 一个 table

问题二: 你要什么 ID??


原帖由 deity01 于 1-8-2007 09:06 AM 发表
#1: 做两个update statement 个别update 个别的table lo...
#2: ID 应该是你的primary key 吧...全新的record, ID 是你自己定的...或者用auto generate 的funtion吧..




问题二

ID 是primarykey
ID是auto generate 比如 autonumber
如果用 insert into table ; select ID from table
会不会产生误差?
就是用非常短的时间内执行几个 SQL insert
那么Select 出来的未必是输入的那种

[ 本帖最后由 quantum^_^ 于 1-8-2007 11:57 AM 编辑 ]
回复

使用道具 举报

发表于 1-8-2007 03:03 PM | 显示全部楼层
我只能大概猜想你要说什么。。不能完全明白。。。避免让大家有所误会所以我建议你详细些解释。。
回复

使用道具 举报

发表于 7-8-2007 03:19 AM | 显示全部楼层
加这行在前面
"SET NOCOUNT ON "
和后面
" SELECT SCOPE_IDENTITY() AS NewID SET NOCOUNT OFF"

NewID = 这是你要的ID


  1. sSQL = "SET NOCOUNT ON " & _
  2. "INSERT INTO <Table>... " & _
  3. "...) " & _
  4. "SELECT SCOPE_IDENTITY() AS NewID SET NOCOUNT OFF"
复制代码


Stored Procedure 也一样方法

也可以试试这样,能确保ID是从<Table>取来,重复使用也可以
IDENT_CURRENT('<Table>')
回复

使用道具 举报

Follow Us
 楼主| 发表于 14-8-2007 11:41 AM | 显示全部楼层
谢谢楼上各位

给我提示

原来 SCOPE_IDENTITY()  是 给 mssql  用

last_insert_id() 是给 mysql用 的
回复

使用道具 举报

发表于 15-8-2007 09:59 AM | 显示全部楼层
原帖由 quantum^_^ 于 14-8-2007 11:41 AM 发表
谢谢楼上各位

给我提示

原来 SCOPE_IDENTITY()  是 给 mssql  用

last_insert_id() 是给 mysql用 的


在使用last_insert_id() 之前就把table lock起来,使用完毕后才unlock table,不然如果1秒有1000个insert record的话你就可能拿错ID了
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 1-10-2007 03:47 PM | 显示全部楼层
原帖由 max5007 于 15-8-2007 09:59 AM 发表


在使用last_insert_id() 之前就把table lock起来,使用完毕后才unlock table,不然如果1秒有1000个insert record的话你就可能拿错ID了

如何lock ?
回复

使用道具 举报

阿牙木 该用户已被删除
发表于 4-10-2007 11:16 PM | 显示全部楼层
问题一:

你要同时update 两个 table, 在sql 2005里好像可以做到,不过并不简单. 看起来你不是在使用sql 2005 喔.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 21-9-2025 01:46 PM , Processed in 0.139560 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表