我有一个名为“UserTypes”的表,其中主id是[uniqueidentifier]。我在另一个表中有一个引用,叫做“用户”。Users表以UserTypeId作为foreignKey。
CREATE TABLE [UserTypes] (
[Id] [uniqueidentifier] DEFAULT NEWID() PRIMARY KEY,
[UserName] [varchar](100) NOT NULL,
[UserCD] [varchar](40) NOT NULL
GO
INSERT INTO [dbo].[UserTypes]
([UserName], [UserCD])
VALUES
('Administrator','ADMI'),
('NonPrimary','NONP'),
GO
-- ID got generated in [UserTypes] is '80D1EEE7-0BCC-48A7-A741-29A1D8B6E580' for 'ADMI'
CREATE TABLE [Users] (
[Id] [uniqueidentifier] DEFAULT NEWID() PRIMARY KEY,
[UserTypeId] [uniqueidentifier] NOT NULL,
[UserName] [varchar](100) NOT NULL,
CONSTRAINT Users_UserTypeId_UserType_Id FOREIGN KEY (UserTypeId)
REFERENCES UserTypes(Id))
GO
INSERT INTO [dbo].[Users]
([UserTypeId], [UserName])
VALUES
('80D1EEE7-0BCC-48A7-A741-29A1D8B6E580','Kushal Seth')
GO这个'80D1EEE7-0BCC-48A7-A741-29A1D8B6E580'是来自userType表的'ADMI‘的userTypeId。
我的问题是,假设我需要在一个新的DB中运行这个脚本,那么'ADMI‘的ID将在'UserTypes’表中不同。在插入“用户”表时,脚本会抛出错误。
我拥有的一个选项是声明变量并从UserType表中选择ID并将其赋值给这个变量,然后在用户表的insert查询中使用该变量。
这是唯一的办法吗?或者有没有更好的方法来设计这样的桌子。任何设计建议都会很感激。
发布于 2022-04-10 21:26:09
假设我需要在一个新的DB中运行这个脚本,那么'ADMI‘的ID将在'UserTypes’表中不同。
因此,从UserTypes中移除Guid,并将'UserCD‘作为主键。
CREATE TABLE [UserTypes]
(
[UserCD] [varchar](40) NOT NULL PRIMARY KEY,
[UserName] [varchar](100) NOT NULL
)
GO
INSERT INTO [dbo].[UserTypes]
([UserName], [UserCD])
VALUES
('Administrator','ADMI'),
('NonPrimary','NONP')在任何可以想象的方面都会更好。
https://stackoverflow.com/questions/71820619
复制相似问题