Generic TVP tradeoffs?Do I need a separate Id column for this “mapping” table?With MS SQL Server are the generated constraint names predictable?Create a table dynamically in SQL Serverdeteriorating stored procedure running timesUpdate all rows from a table with random foreign key from another tableSelect Into removes IDENTITY property from target tableWhy am I getting “Snapshot isolation transaction aborted due to update conflict”?What is a “Partial Matching Index”?Insert statement on one table blocking delete on another unrelated table on sql serverWindowed IDENTITY column definition?

Maxwell Tensor Identity

What can I do if I am asked to learn different programming languages very frequently?

How to generate binary array whose elements with values 1 are randomly drawn

How difficult is it to simply disable/disengage the MCAS on Boeing 737 Max 8 & 9 Aircraft?

How can I wire 7 outdoor posts correctly?

Why is a white electrical wire connected to 2 black wires?

How to define limit operations in general topological spaces? Are nets able to do this?

Open new file while keeping the focus on the the current buffer

TikZ-decoration: control decoration amplitude along curve

Describing a chess game in a novel

Four married couples attend a party. Each person shakes hands with every other person, except their own spouse, exactly once. How many handshakes?

How far is Brahmaloka from our Earth?

What does "^L" mean in C?

In the 1924 version of The Thief of Bagdad, no character is named, right?

PTIJ What is the inyan of the Konami code in Uncle Moishy's song?

Print a physical multiplication table

Am I eligible for the Eurail Youth pass? I am 27.5 years old

World War I as a war of liberals against authoritarians?

Unnormalized Log Probability - RNN

Probably overheated black color SMD pads

Why does the degree of dissociation change when we dilute a weak acid even though the equilibrium constant K is constant?

If "dar" means "to give", what does "daros" mean?

How is the partial sum of a geometric sequence calculated?

Is this an example of a Neapolitan chord?



Generic TVP tradeoffs?


Do I need a separate Id column for this “mapping” table?With MS SQL Server are the generated constraint names predictable?Create a table dynamically in SQL Serverdeteriorating stored procedure running timesUpdate all rows from a table with random foreign key from another tableSelect Into removes IDENTITY property from target tableWhy am I getting “Snapshot isolation transaction aborted due to update conflict”?What is a “Partial Matching Index”?Insert statement on one table blocking delete on another unrelated table on sql serverWindowed IDENTITY column definition?













2















Is there a best practice or strategy for table types used in TVPs? For instance, given the following:



CREATE TABLE dbo.Colors (
Id int identity PRIMARY KEY,
Name nvarchar(100),
);

CREATE TABLE dbo.Shapes (
Id int identity PRIMARY KEY,
Name nvarchar(100),
);

CREATE TABLE dbo.Materials (
Id int identity PRIMARY KEY,
Name nvarchar(100),
);

CREATE TABLE dbo.Items (
Id int identity PRIMARY KEY,
Name nvarchar(100),
ColorId int FOREIGN KEY REFERENCES dbo.Colors (ID),
ShapeId int FOREIGN KEY REFERENCES dbo.Shapes (ID),
MaterialId int FOREIGN KEY REFERENCES dbo.Materials (ID),
);


If you implemented a stored procedure for searching items that needed to support selecting multiple colors, multiple shapes, and multiple materials via TVPs (think checkbox lists in the UI), would you create three separate table types, one for every TVP, or would you create a single type for using it across all three?



In other words, this:



CREATE TYPE dbo.ColorIds AS TABLE (Id int);
CREATE TYPE dbo.ShapeIds AS TABLE (Id int);
CREATE TYPE dbo.MaterialIds AS TABLE (Id int);
GO

CREATE PROCEDURE dbo.SearchItems
@ColorIds ColorIds READONLY,
@ShapeIds ShapeIds READONLY,
@MaterialIds MaterialIds READONLY
AS
BEGIN
PRINT 'Do something here'
END
GO


Versus this:



CREATE TYPE dbo.Ids AS TABLE (Id int);
GO

CREATE PROCEDURE dbo.SearchItems
@ColorIds Ids READONLY,
@ShapeIds Ids READONLY,
@MaterialIds Ids READONLY
AS
BEGIN
PRINT 'Do something here'
END
GO


The sample is deliberately contrived; the real use case consists of a lot more tables which although have different columns, all have a ID int primary key. Because of this, I personally am much more inclined to do the latter. It's far less overhead, but I'm curious to know if there are any cons I should be aware of in doing this. This is of course for TVPs and TVPs only (I would never mix different entities in a real table, or any other structure of a more permanent nature.)



While at it, what is your naming convention for naming table types and TVPs?










share|improve this question









New contributor




Daniel Liuzzi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
























    2















    Is there a best practice or strategy for table types used in TVPs? For instance, given the following:



    CREATE TABLE dbo.Colors (
    Id int identity PRIMARY KEY,
    Name nvarchar(100),
    );

    CREATE TABLE dbo.Shapes (
    Id int identity PRIMARY KEY,
    Name nvarchar(100),
    );

    CREATE TABLE dbo.Materials (
    Id int identity PRIMARY KEY,
    Name nvarchar(100),
    );

    CREATE TABLE dbo.Items (
    Id int identity PRIMARY KEY,
    Name nvarchar(100),
    ColorId int FOREIGN KEY REFERENCES dbo.Colors (ID),
    ShapeId int FOREIGN KEY REFERENCES dbo.Shapes (ID),
    MaterialId int FOREIGN KEY REFERENCES dbo.Materials (ID),
    );


    If you implemented a stored procedure for searching items that needed to support selecting multiple colors, multiple shapes, and multiple materials via TVPs (think checkbox lists in the UI), would you create three separate table types, one for every TVP, or would you create a single type for using it across all three?



    In other words, this:



    CREATE TYPE dbo.ColorIds AS TABLE (Id int);
    CREATE TYPE dbo.ShapeIds AS TABLE (Id int);
    CREATE TYPE dbo.MaterialIds AS TABLE (Id int);
    GO

    CREATE PROCEDURE dbo.SearchItems
    @ColorIds ColorIds READONLY,
    @ShapeIds ShapeIds READONLY,
    @MaterialIds MaterialIds READONLY
    AS
    BEGIN
    PRINT 'Do something here'
    END
    GO


    Versus this:



    CREATE TYPE dbo.Ids AS TABLE (Id int);
    GO

    CREATE PROCEDURE dbo.SearchItems
    @ColorIds Ids READONLY,
    @ShapeIds Ids READONLY,
    @MaterialIds Ids READONLY
    AS
    BEGIN
    PRINT 'Do something here'
    END
    GO


    The sample is deliberately contrived; the real use case consists of a lot more tables which although have different columns, all have a ID int primary key. Because of this, I personally am much more inclined to do the latter. It's far less overhead, but I'm curious to know if there are any cons I should be aware of in doing this. This is of course for TVPs and TVPs only (I would never mix different entities in a real table, or any other structure of a more permanent nature.)



    While at it, what is your naming convention for naming table types and TVPs?










    share|improve this question









    New contributor




    Daniel Liuzzi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.






















      2












      2








      2








      Is there a best practice or strategy for table types used in TVPs? For instance, given the following:



      CREATE TABLE dbo.Colors (
      Id int identity PRIMARY KEY,
      Name nvarchar(100),
      );

      CREATE TABLE dbo.Shapes (
      Id int identity PRIMARY KEY,
      Name nvarchar(100),
      );

      CREATE TABLE dbo.Materials (
      Id int identity PRIMARY KEY,
      Name nvarchar(100),
      );

      CREATE TABLE dbo.Items (
      Id int identity PRIMARY KEY,
      Name nvarchar(100),
      ColorId int FOREIGN KEY REFERENCES dbo.Colors (ID),
      ShapeId int FOREIGN KEY REFERENCES dbo.Shapes (ID),
      MaterialId int FOREIGN KEY REFERENCES dbo.Materials (ID),
      );


      If you implemented a stored procedure for searching items that needed to support selecting multiple colors, multiple shapes, and multiple materials via TVPs (think checkbox lists in the UI), would you create three separate table types, one for every TVP, or would you create a single type for using it across all three?



      In other words, this:



      CREATE TYPE dbo.ColorIds AS TABLE (Id int);
      CREATE TYPE dbo.ShapeIds AS TABLE (Id int);
      CREATE TYPE dbo.MaterialIds AS TABLE (Id int);
      GO

      CREATE PROCEDURE dbo.SearchItems
      @ColorIds ColorIds READONLY,
      @ShapeIds ShapeIds READONLY,
      @MaterialIds MaterialIds READONLY
      AS
      BEGIN
      PRINT 'Do something here'
      END
      GO


      Versus this:



      CREATE TYPE dbo.Ids AS TABLE (Id int);
      GO

      CREATE PROCEDURE dbo.SearchItems
      @ColorIds Ids READONLY,
      @ShapeIds Ids READONLY,
      @MaterialIds Ids READONLY
      AS
      BEGIN
      PRINT 'Do something here'
      END
      GO


      The sample is deliberately contrived; the real use case consists of a lot more tables which although have different columns, all have a ID int primary key. Because of this, I personally am much more inclined to do the latter. It's far less overhead, but I'm curious to know if there are any cons I should be aware of in doing this. This is of course for TVPs and TVPs only (I would never mix different entities in a real table, or any other structure of a more permanent nature.)



      While at it, what is your naming convention for naming table types and TVPs?










      share|improve this question









      New contributor




      Daniel Liuzzi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.












      Is there a best practice or strategy for table types used in TVPs? For instance, given the following:



      CREATE TABLE dbo.Colors (
      Id int identity PRIMARY KEY,
      Name nvarchar(100),
      );

      CREATE TABLE dbo.Shapes (
      Id int identity PRIMARY KEY,
      Name nvarchar(100),
      );

      CREATE TABLE dbo.Materials (
      Id int identity PRIMARY KEY,
      Name nvarchar(100),
      );

      CREATE TABLE dbo.Items (
      Id int identity PRIMARY KEY,
      Name nvarchar(100),
      ColorId int FOREIGN KEY REFERENCES dbo.Colors (ID),
      ShapeId int FOREIGN KEY REFERENCES dbo.Shapes (ID),
      MaterialId int FOREIGN KEY REFERENCES dbo.Materials (ID),
      );


      If you implemented a stored procedure for searching items that needed to support selecting multiple colors, multiple shapes, and multiple materials via TVPs (think checkbox lists in the UI), would you create three separate table types, one for every TVP, or would you create a single type for using it across all three?



      In other words, this:



      CREATE TYPE dbo.ColorIds AS TABLE (Id int);
      CREATE TYPE dbo.ShapeIds AS TABLE (Id int);
      CREATE TYPE dbo.MaterialIds AS TABLE (Id int);
      GO

      CREATE PROCEDURE dbo.SearchItems
      @ColorIds ColorIds READONLY,
      @ShapeIds ShapeIds READONLY,
      @MaterialIds MaterialIds READONLY
      AS
      BEGIN
      PRINT 'Do something here'
      END
      GO


      Versus this:



      CREATE TYPE dbo.Ids AS TABLE (Id int);
      GO

      CREATE PROCEDURE dbo.SearchItems
      @ColorIds Ids READONLY,
      @ShapeIds Ids READONLY,
      @MaterialIds Ids READONLY
      AS
      BEGIN
      PRINT 'Do something here'
      END
      GO


      The sample is deliberately contrived; the real use case consists of a lot more tables which although have different columns, all have a ID int primary key. Because of this, I personally am much more inclined to do the latter. It's far less overhead, but I'm curious to know if there are any cons I should be aware of in doing this. This is of course for TVPs and TVPs only (I would never mix different entities in a real table, or any other structure of a more permanent nature.)



      While at it, what is your naming convention for naming table types and TVPs?







      sql-server table-valued-parameters






      share|improve this question









      New contributor




      Daniel Liuzzi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question









      New contributor




      Daniel Liuzzi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question








      edited 2 hours ago







      Daniel Liuzzi













      New contributor




      Daniel Liuzzi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 3 hours ago









      Daniel LiuzziDaniel Liuzzi

      1114




      1114




      New contributor




      Daniel Liuzzi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Daniel Liuzzi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Daniel Liuzzi is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.




















          1 Answer
          1






          active

          oldest

          votes


















          2














          I personally use the latter, more generic version in my systems. I have two tables that I can think of off the top of my head: UniqueIntegerTable and UniqueStringTable - as you can imagine, they are defined as follows:



          CREATE TYPE Utils.UniqueIntegerTable AS TABLE (
          [Value] INT NOT NULL PRIMARY KEY
          );
          CREATE TYPE Utils.UniqueStringTable AS TABLE (
          [Value] NVARCHAR(50) NOT NULL PRIMARY KEY
          );


          I prefer to have generic TVP's so that I don't clog up my schema's with multiple types that are basically the same. The performance is exactly the same as if you defined an explicit type as in your first example and it has the benefit that it creates less code for me to maintain.



          I know one argument that I have previously heard for using explicit types that are bound to tables is that it is easier to understand their usage. I personally don't agree with this. There is nothing preventing me from defining a stored procedure using the wrong type (but has the correct shape for my needs). Instead, I can give the variable a good name to infer usage and the contents of the table:



          CREATE PROCEDURE dbo.UpdateEmployees (
          @employeeIds Utils.UniqueIntegerTable READONLY
          )
          BEGIN
          SET NOCOUNT ON;

          -- Use table as needed.

          END
          GO


          In terms of naming conventions, I don't know of any official standard but the one I use is to append Table to the end of the type name. I know that this is not really all that different from prefixing things with tbl but I'm ok with it in this instance. As with all naming conventions, pick one that you feel is easy to work with it - but once you do, stick to it. Naming conventions are only useful if you are consistent.






          share|improve this answer




















          • 1





            Totally agree with the nothing stopping you from using the wrong type part. In fact, right before posting the question I was checking if there is anything like FK constraints for table types. Didn't find anything. If there was one argument to push me over to favoring specific types, that would have been it. I'm sort of glad it wasn't the case!

            – Daniel Liuzzi
            2 hours ago












          • Yeah, you definitely can't define a foreign key to a table type. I think if it was anything more than a glorified temp table and had a lot more functionality, then I would use explicit types. But as it stands, less maintenance means I can spend more time doing things that are important, rather than worrying about whether I have passed the right type to a stored procedure. ;-)

            – Mr.Brownstone
            2 hours ago










          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "182"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );






          Daniel Liuzzi is a new contributor. Be nice, and check out our Code of Conduct.









          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f232372%2fgeneric-tvp-tradeoffs%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          2














          I personally use the latter, more generic version in my systems. I have two tables that I can think of off the top of my head: UniqueIntegerTable and UniqueStringTable - as you can imagine, they are defined as follows:



          CREATE TYPE Utils.UniqueIntegerTable AS TABLE (
          [Value] INT NOT NULL PRIMARY KEY
          );
          CREATE TYPE Utils.UniqueStringTable AS TABLE (
          [Value] NVARCHAR(50) NOT NULL PRIMARY KEY
          );


          I prefer to have generic TVP's so that I don't clog up my schema's with multiple types that are basically the same. The performance is exactly the same as if you defined an explicit type as in your first example and it has the benefit that it creates less code for me to maintain.



          I know one argument that I have previously heard for using explicit types that are bound to tables is that it is easier to understand their usage. I personally don't agree with this. There is nothing preventing me from defining a stored procedure using the wrong type (but has the correct shape for my needs). Instead, I can give the variable a good name to infer usage and the contents of the table:



          CREATE PROCEDURE dbo.UpdateEmployees (
          @employeeIds Utils.UniqueIntegerTable READONLY
          )
          BEGIN
          SET NOCOUNT ON;

          -- Use table as needed.

          END
          GO


          In terms of naming conventions, I don't know of any official standard but the one I use is to append Table to the end of the type name. I know that this is not really all that different from prefixing things with tbl but I'm ok with it in this instance. As with all naming conventions, pick one that you feel is easy to work with it - but once you do, stick to it. Naming conventions are only useful if you are consistent.






          share|improve this answer




















          • 1





            Totally agree with the nothing stopping you from using the wrong type part. In fact, right before posting the question I was checking if there is anything like FK constraints for table types. Didn't find anything. If there was one argument to push me over to favoring specific types, that would have been it. I'm sort of glad it wasn't the case!

            – Daniel Liuzzi
            2 hours ago












          • Yeah, you definitely can't define a foreign key to a table type. I think if it was anything more than a glorified temp table and had a lot more functionality, then I would use explicit types. But as it stands, less maintenance means I can spend more time doing things that are important, rather than worrying about whether I have passed the right type to a stored procedure. ;-)

            – Mr.Brownstone
            2 hours ago















          2














          I personally use the latter, more generic version in my systems. I have two tables that I can think of off the top of my head: UniqueIntegerTable and UniqueStringTable - as you can imagine, they are defined as follows:



          CREATE TYPE Utils.UniqueIntegerTable AS TABLE (
          [Value] INT NOT NULL PRIMARY KEY
          );
          CREATE TYPE Utils.UniqueStringTable AS TABLE (
          [Value] NVARCHAR(50) NOT NULL PRIMARY KEY
          );


          I prefer to have generic TVP's so that I don't clog up my schema's with multiple types that are basically the same. The performance is exactly the same as if you defined an explicit type as in your first example and it has the benefit that it creates less code for me to maintain.



          I know one argument that I have previously heard for using explicit types that are bound to tables is that it is easier to understand their usage. I personally don't agree with this. There is nothing preventing me from defining a stored procedure using the wrong type (but has the correct shape for my needs). Instead, I can give the variable a good name to infer usage and the contents of the table:



          CREATE PROCEDURE dbo.UpdateEmployees (
          @employeeIds Utils.UniqueIntegerTable READONLY
          )
          BEGIN
          SET NOCOUNT ON;

          -- Use table as needed.

          END
          GO


          In terms of naming conventions, I don't know of any official standard but the one I use is to append Table to the end of the type name. I know that this is not really all that different from prefixing things with tbl but I'm ok with it in this instance. As with all naming conventions, pick one that you feel is easy to work with it - but once you do, stick to it. Naming conventions are only useful if you are consistent.






          share|improve this answer




















          • 1





            Totally agree with the nothing stopping you from using the wrong type part. In fact, right before posting the question I was checking if there is anything like FK constraints for table types. Didn't find anything. If there was one argument to push me over to favoring specific types, that would have been it. I'm sort of glad it wasn't the case!

            – Daniel Liuzzi
            2 hours ago












          • Yeah, you definitely can't define a foreign key to a table type. I think if it was anything more than a glorified temp table and had a lot more functionality, then I would use explicit types. But as it stands, less maintenance means I can spend more time doing things that are important, rather than worrying about whether I have passed the right type to a stored procedure. ;-)

            – Mr.Brownstone
            2 hours ago













          2












          2








          2







          I personally use the latter, more generic version in my systems. I have two tables that I can think of off the top of my head: UniqueIntegerTable and UniqueStringTable - as you can imagine, they are defined as follows:



          CREATE TYPE Utils.UniqueIntegerTable AS TABLE (
          [Value] INT NOT NULL PRIMARY KEY
          );
          CREATE TYPE Utils.UniqueStringTable AS TABLE (
          [Value] NVARCHAR(50) NOT NULL PRIMARY KEY
          );


          I prefer to have generic TVP's so that I don't clog up my schema's with multiple types that are basically the same. The performance is exactly the same as if you defined an explicit type as in your first example and it has the benefit that it creates less code for me to maintain.



          I know one argument that I have previously heard for using explicit types that are bound to tables is that it is easier to understand their usage. I personally don't agree with this. There is nothing preventing me from defining a stored procedure using the wrong type (but has the correct shape for my needs). Instead, I can give the variable a good name to infer usage and the contents of the table:



          CREATE PROCEDURE dbo.UpdateEmployees (
          @employeeIds Utils.UniqueIntegerTable READONLY
          )
          BEGIN
          SET NOCOUNT ON;

          -- Use table as needed.

          END
          GO


          In terms of naming conventions, I don't know of any official standard but the one I use is to append Table to the end of the type name. I know that this is not really all that different from prefixing things with tbl but I'm ok with it in this instance. As with all naming conventions, pick one that you feel is easy to work with it - but once you do, stick to it. Naming conventions are only useful if you are consistent.






          share|improve this answer















          I personally use the latter, more generic version in my systems. I have two tables that I can think of off the top of my head: UniqueIntegerTable and UniqueStringTable - as you can imagine, they are defined as follows:



          CREATE TYPE Utils.UniqueIntegerTable AS TABLE (
          [Value] INT NOT NULL PRIMARY KEY
          );
          CREATE TYPE Utils.UniqueStringTable AS TABLE (
          [Value] NVARCHAR(50) NOT NULL PRIMARY KEY
          );


          I prefer to have generic TVP's so that I don't clog up my schema's with multiple types that are basically the same. The performance is exactly the same as if you defined an explicit type as in your first example and it has the benefit that it creates less code for me to maintain.



          I know one argument that I have previously heard for using explicit types that are bound to tables is that it is easier to understand their usage. I personally don't agree with this. There is nothing preventing me from defining a stored procedure using the wrong type (but has the correct shape for my needs). Instead, I can give the variable a good name to infer usage and the contents of the table:



          CREATE PROCEDURE dbo.UpdateEmployees (
          @employeeIds Utils.UniqueIntegerTable READONLY
          )
          BEGIN
          SET NOCOUNT ON;

          -- Use table as needed.

          END
          GO


          In terms of naming conventions, I don't know of any official standard but the one I use is to append Table to the end of the type name. I know that this is not really all that different from prefixing things with tbl but I'm ok with it in this instance. As with all naming conventions, pick one that you feel is easy to work with it - but once you do, stick to it. Naming conventions are only useful if you are consistent.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 2 hours ago

























          answered 2 hours ago









          Mr.BrownstoneMr.Brownstone

          9,54432342




          9,54432342







          • 1





            Totally agree with the nothing stopping you from using the wrong type part. In fact, right before posting the question I was checking if there is anything like FK constraints for table types. Didn't find anything. If there was one argument to push me over to favoring specific types, that would have been it. I'm sort of glad it wasn't the case!

            – Daniel Liuzzi
            2 hours ago












          • Yeah, you definitely can't define a foreign key to a table type. I think if it was anything more than a glorified temp table and had a lot more functionality, then I would use explicit types. But as it stands, less maintenance means I can spend more time doing things that are important, rather than worrying about whether I have passed the right type to a stored procedure. ;-)

            – Mr.Brownstone
            2 hours ago












          • 1





            Totally agree with the nothing stopping you from using the wrong type part. In fact, right before posting the question I was checking if there is anything like FK constraints for table types. Didn't find anything. If there was one argument to push me over to favoring specific types, that would have been it. I'm sort of glad it wasn't the case!

            – Daniel Liuzzi
            2 hours ago












          • Yeah, you definitely can't define a foreign key to a table type. I think if it was anything more than a glorified temp table and had a lot more functionality, then I would use explicit types. But as it stands, less maintenance means I can spend more time doing things that are important, rather than worrying about whether I have passed the right type to a stored procedure. ;-)

            – Mr.Brownstone
            2 hours ago







          1




          1





          Totally agree with the nothing stopping you from using the wrong type part. In fact, right before posting the question I was checking if there is anything like FK constraints for table types. Didn't find anything. If there was one argument to push me over to favoring specific types, that would have been it. I'm sort of glad it wasn't the case!

          – Daniel Liuzzi
          2 hours ago






          Totally agree with the nothing stopping you from using the wrong type part. In fact, right before posting the question I was checking if there is anything like FK constraints for table types. Didn't find anything. If there was one argument to push me over to favoring specific types, that would have been it. I'm sort of glad it wasn't the case!

          – Daniel Liuzzi
          2 hours ago














          Yeah, you definitely can't define a foreign key to a table type. I think if it was anything more than a glorified temp table and had a lot more functionality, then I would use explicit types. But as it stands, less maintenance means I can spend more time doing things that are important, rather than worrying about whether I have passed the right type to a stored procedure. ;-)

          – Mr.Brownstone
          2 hours ago





          Yeah, you definitely can't define a foreign key to a table type. I think if it was anything more than a glorified temp table and had a lot more functionality, then I would use explicit types. But as it stands, less maintenance means I can spend more time doing things that are important, rather than worrying about whether I have passed the right type to a stored procedure. ;-)

          – Mr.Brownstone
          2 hours ago










          Daniel Liuzzi is a new contributor. Be nice, and check out our Code of Conduct.









          draft saved

          draft discarded


















          Daniel Liuzzi is a new contributor. Be nice, and check out our Code of Conduct.












          Daniel Liuzzi is a new contributor. Be nice, and check out our Code of Conduct.











          Daniel Liuzzi is a new contributor. Be nice, and check out our Code of Conduct.














          Thanks for contributing an answer to Database Administrators Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f232372%2fgeneric-tvp-tradeoffs%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Era Viking Índice Início da Era Viquingue | Cotidiano | Sociedade | Língua | Religião | A arte | As primeiras cidades | As viagens dos viquingues | Viquingues do Oeste e Leste | Fim da Era Viquingue | Fontes históricas | Referências Bibliografia | Ligações externas | Menu de navegação«Sverige då!»«Handel I vikingetid»«O que é Nórdico Antigo»Mito, magia e religião na volsunga saga Um olhar sobre a trajetória mítica do herói sigurd«Bonden var den verklige vikingen»«Vikingatiden»«Vikingatiden»«Vinland»«Guerreiras de Óðinn: As Valkyrjor na Mitologia Viking»1519-9053«Esculpindo símbolos e seres: A arte viking em pedras rúnicas»1679-9313Historia - Tema: VikingarnaAventura e Magia no Mundo das Sagas IslandesasEra Vikinge

          What's the metal clinking sound at the end of credits in Avengers: Endgame?What makes Thanos so strong in Avengers: Endgame?Who is the character that appears at the end of Endgame?What happens to Mjolnir (Thor's hammer) at the end of Endgame?The People's Ages in Avengers: EndgameWhat did Nebula do in Avengers: Endgame?Messing with time in the Avengers: Endgame climaxAvengers: Endgame timelineWhat are the time-travel rules in Avengers Endgame?Why use this song in Avengers: Endgame Opening Logo Sequence?Peggy's age in Avengers Endgame

          Are there legal definitions of ethnicities/races? The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Legal definitions in the United StatesAre there truly legal limits on US interest rates?Are gender identity and sexual orientation federally protected?Why is there an apparent legal bias against digital services?What limits are there to the powers of individual judges in the United States legal system?Are women only scholarships legal under Irish / EU law?Is the term “race” defined by Public Law enacted by Congress of the United StatesIs there a legal definition of race in the US?Neighbors are spying for landlord on Renters is it legal?Are Protected Classes Bi-directional?