回答

收藏

是否可以在sql中的另一个用户定义的表类型中使用用户定义的表类型

技术问答 技术问答 160 人阅读 | 0 人回复 | 2023-09-13

是否可以在SQL中的另一个用户定义表类型(嵌套的用户定义表类型)中使用用户定义的表类型。4 m5 }3 ~8 S; r" U: }- L4 `+ V  L$ _: T
CREATE TYPE A AS TABLE
7 j  D; S% d/ R. ?(
8 @8 ^5 O! K0 M/ u: H$ S    A_Id int
- @! k5 y; S; ~5 P5 H, k3 p)
. d" d* \' @1 F% Z( @" ZGO! y0 \4 G) b+ X! l! T
. c5 M" j; F! ~
CREATE TYPE B AS TABLE# R) w8 H& {: ^
(
1 K% I7 V& h+ g    B_Id int,6 G. j; b+ Y: r0 Q: K
    A_Id A --Need To Use A as data type in B
( s" S2 E- @' m4 W- l( u+ G)7 R/ `/ i1 J" ?7 w+ \* D
GO7 `9 i1 u! R1 x- W; h/ B6 l
我有高级发送表中的行的数据表。$ k) \% W! w( i" Q) ]$ D9 k; F; {
Table4 n, j  y! b, g
1.Item1
8 A# H% Z5 R' f% N$ t   1.Vendor1
9 F6 _) h+ P" ^1 R1 B5 ~$ x3 F   2.Vendor21 R' q# J+ e* Z4 y) _* a+ a
2.Item1
6 F7 z! u  s( u: g, s   1.Vendor1: B5 Z! B; `' l$ v
   2.Vendor21 y; |. y( B! R. `. D
请帮助如何将表行中的表数据从 asp.net发送到sql 。通过循环还是有任何简单的方法将嵌套表数据发送到服务器。
$ v8 h% @+ O) p2 V  j% P# D, F) ]               
; p4 F7 m3 F; O& k解决方案:: E2 A) k' a+ b! L. a1 i! Q6 h7 M
                6 _% k! U8 B: J: X! }6 M! H
2 U0 m/ _$ J& {  G: p$ m7 s1 V

' _/ V) r- j# W6 V                不,为什么会这样?这不是SQL Server(或任何关系数据库)的工作方式。& y% n% v; o1 f8 i% E* D1 W
从TechNet的“用户定义的表类型”页面上:
3 O7 P7 s  l; j% d6 F+ Y' c
8 \! y9 E5 G3 I. C* p限制
$ p1 {( g# w+ j8 @用户定义的表类型具有以下限制:  d9 W+ x" Y' p1 m( _
用户定义的表类型不能用作表中的列或结构化的用户定义类型的字段。) `8 v1 H# e$ V8 k

! k7 n# ?: j2 d1 J
# ~6 b1 X% @' {7 ?- j* ], }7 ?0 v1 z( F
关系数据库中的“嵌套”是通过使用外键实现的
% ~1 E+ T  R! O0 T+ g, Z3 C" W您甚至无法在两种用户定义的表类型之间创建外键约束。9 v. o4 H2 _4 X6 T# c1 i+ B
您可以做的是创建两种表类型,其中一种具有保留另一种ID的列,如下所示:  U# v4 }+ J) D/ U! z
CREATE TYPE A AS TABLE
9 M8 b7 u1 f8 T3 ^( @& M/ q(
( I, x) F2 V/ Z6 e    A_Id int
- j2 }% |( j. j)
. g& u8 u. I9 ?, F5 V1 p  m) K! ~GO
  F  l' q  K7 A
8 x* _) E7 z6 X8 O! t9 K/ B5 BCREATE TYPE B AS TABLE
# Z4 m3 m8 {: m0 E' M( Y8 }(
- L- S& f' S- s6 z! t    B_Id int,
! P+ o* }0 {" e& K/ G3 }    A_Id int -- "FK"# ^. D0 K, _6 L1 w7 R, o
)" |/ E& t& B+ y$ k
GO
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则