PDA

View Full Version : insert vào 2 bảng quan hệ 1-1 ?



cest
02-04-2007, 23:52
Các bồ ơi giúp tui với. Tui có 2 bảng quan hệ 1-1 bảng 1 (id,Email,phone)(id có thuộc tính identity=yes) là PK ,bảng 2(id,name,age)(id thuộc tính identiy=no). Tui insert cùng 1 lúc vào 2 bảng ko được. Sau đó insert vào bảng 1 trước sau đó insert vào bảng 2 vẫn ko được. Help me

jiSh@n
03-04-2007, 00:14
Cho xin cái thông báo lỗi lol

cest
03-04-2007, 00:29
bồ ơi hay là hướng dẫn cách insert vào từ đầu đi. Tui cũng thử vài cách để insert vào nên mỗi lần báo 1 kiểu. Hd hộ mih 1 cách mới hẳn đi.

trieudoahong
03-04-2007, 01:03
có lẽ nên tạm thỡi gỡ các quan hệ và ràng buộc gữa 2 bảng, insert vài cái vào rồi gắn lại các quan hệ và ràng buộc thử coi.

cest
03-04-2007, 11:04
tui cũng đã thử làm như vậy rồi nhưng vẫn ko được. Help me

KingsCat
03-04-2007, 14:01
Cho xin cái thông báo lỗi lol

Bạn có thể post câu lệnh insert và thông báo lỗi lên đây k?
Nói chung chung thì làm sao mà mọi người giúp được.

thangdung
03-04-2007, 14:40
cái lỗi này là do bảng Master có cái field (identity =yes) mà ra, nếu trong thu tục thì thử khi insert xong rồi set commit tran xong rồi update bang kia. hoặc tốt hơn hết nên gở bỏ quan hệ đi, vì thực chất ít ai để quan hệ 1-1, trên thiết kế thì để như vậy cho biết chứ thực tế thì lập trình xử hết các ràng buộc là xong.

phatnq2003
03-04-2007, 16:32
Các bồ ơi giúp tui với. Tui có 2 bảng quan hệ 1-1 bảng 1 (id,Email,phone)(id có thuộc tính identity=yes) là PK ,bảng 2(id,name,age)(id thuộc tính identiy=no). Tui insert cùng 1 lúc vào 2 bảng ko được. Sau đó insert vào bảng 1 trước sau đó insert vào bảng 2 vẫn ko được. Help me

ID của bảng 1 của bạn là identity, do đó nó phát sinh tự động.
Do vậy bạn làm sao lấy được ngay dữ liệu của ID bảng 1 để insert vào bảng 2?
Khi bạn insert vào bảng 1 xong, bạn phải làm động tác lấy ID vừa tạo ra cho record mới insert, sau đó bạn mới tạo lệnh insert để đưa vào bảng 2.

Theo thiết kế của bạn, cần gì mà phải có 2 bảng để quan hệ 1- 1 chi cho cực vậy?

cest
03-04-2007, 18:11
Theo thiết kế của bạn, cần gì mà phải có 2 bảng để quan hệ 1- 1 chi cho cực vậy?
À mình cũng định cho vào 1 bảng nhưng bảng có nhiều côt quá. Ý mình là có 1 bảng ngắn gọn mô tả sản phẩm và quan hệ 1-1 với bảng khác là bảng chi tiết hơn

cest
04-04-2007, 01:34
Cho xin cái thông báo lỗi lol
bang 1 thi tui insert binh thuong
con day la cau lenh insert vao bang 2
declare @ident int
insert into TblSupplierDetails values(@ident,'fdada','fadytyt','daf','afd','dad')
set @ident=@@identity

tui dùng hàm sau @@identity để lấy giá trị tăng tự động do hàm sinh ra rồi insert id của bảng 2 vẫn kô được. Nó báo lỗi như vầy nè: "Cannot insert the value NULL into column 'SupplierID', table 'project_D7_B39.dbo.TblSupplierDetails'; column does not allow nulls. INSERT fails.
The statement has been terminated."

tui insert trường đầu tiên thì ok ko vấn đề gì. Đến trường thứ 2 thì lỗi. Help me

cest
04-04-2007, 01:37
í quên. Bảng 1 gồm các trường (id,Name,Desc) bảng 2 gồm các trường (id,addr,mail,phone,url,image)

KingsCat
04-04-2007, 13:25
À mình cũng định cho vào 1 bảng nhưng bảng có nhiều côt quá. Ý mình là có 1 bảng ngắn gọn mô tả sản phẩm và quan hệ 1-1 với bảng khác là bảng chi tiết hơn

Kiểu này là để tiết kiệm đây mà, vì không phải sản phẩm nào cũng có mô tả chi tiết :)

KingsCat
04-04-2007, 13:32
bang 1 thi tui insert binh thuong
con day la cau lenh insert vao bang 2
declare @ident int
insert into TblSupplierDetails values(@ident,'fdada','fadytyt','daf','afd','dad')
set @ident=@@identity

tui dùng hàm sau @@identity để lấy giá trị tăng tự động do hàm sinh ra rồi insert id của bảng 2 vẫn kô được. Nó báo lỗi như vầy nè: "Cannot insert the value NULL into column 'SupplierID', table 'project_D7_B39.dbo.TblSupplierDetails'; column does not allow nulls. INSERT fails.
The statement has been terminated."

tui insert trường đầu tiên thì ok ko vấn đề gì. Đến trường thứ 2 thì lỗi. Help me


í quên. Bảng 1 gồm các trường (id,Name,Desc) bảng 2 gồm các trường (id,addr,mail,phone,url,image)

Cấu trúc 1 đằng, thông báo lỗi 1 nẻo thì chắc là tại MS SQL lỗi :D

Bạn thử sửa lại như thế này nhé (bắt @@identity sau khi insert vào bảng 1)

declare @ident int

insert into TblSupplier(Name,Desc)
values('SupplierName','Desc')

set @ident=@@identity

insert into TblSupplierDetails values(@ident,'fdada','fadytyt','daf','afd','dad')

cest
05-04-2007, 01:43
thanks you các bồ nhé. Tui giải quyết xong vấn đề rồi