Tôi có một bảng với một cột duy nhất, đó là một bản sắc tự động tạo raChèn nhiều hàng các giá trị mặc định vào một bảng
create table SingleIdTable (
id int identity(1,1) not null
)
tôi có thể chèn một hàng duy nhất với một id tự động được tạo ra với:
insert into SingleIdTable default values
tôi muốn chèn nhiều hàng và sử dụng cú pháp đầu ra để có được id của họ, một cái gì đó như:
insert into SingleIdTable
output inserted.Id into @TableOfIds
select (default values) from SomeOtherTable where Attribute is null
wher e ý định là chèn một hàng vào SingleIdTable
cho mỗi hàng trong SomeOtherTable
trong đó Attribute
là null bằng cách sử dụng id được tạo tự động. Ở trên không hoạt động, nhưng làm thế nào tôi có thể làm điều đó. Tôi lưu ý rằng nếu bảng của tôi có nhiều hơn chỉ là một cột duy nhất tôi có thể làm điều đó, nhưng tôi không thể chọn hàng trống mà là những gì tôi thực sự muốn làm.
Tôi không thể thay đổi định nghĩa của SomeOtherTable
.
+1 Không bao giờ nghĩ về MERGE – RichardTheKiwi
Xảo quyệt ... Bảng một tác phẩm của một ai đó không thích hợp NHibernate khi ánh xạ một nhóm. Tôi sẽ chấp nhận điều này, nhưng bây giờ tôi nhận ra rằng tôi có thể làm tương quan với truy vấn bên trong với chèn để tôi có thể 'output inserted.id, SomeOtherTable.id)'. Điều này có thể không? Thực sự tôi chỉ cần kết hợp các túi của các id được sinh ra với một phần tử 'SomeOtherTable' trong đó' thuộc tính' là null. Có suy nghĩ gì không? – silasdavis
@silasdavis - Chỉ cần sử dụng 'OUTPUT INSERTED.id, T.id' –