首页 新闻 会员 周边

sqlserver 主键 uniqueidentifier 类型数据插入问题,跪求大佬解答

0
悬赏园豆:20 [已解决问题] 解决于 2023-09-13 13:54

大佬们,sqlserver 主键字段类型为 uniqueidentifier,但是在INSERT INTO语句用NEWID()插入报这个错,用代码生成GUID插入还是报这个错,到底是哪里的问题呢,跪求大佬们指点呀,开发语言为C# CS

佩琪·NET的主页 佩琪·NET | 初学一级 | 园豆:40
提问于:2023-09-12 18:52
< >
分享
最佳答案
0

这个语句需要插入5个字段,试试减少到只留1个主键字段,例如 :

insert into my_table(fidGuid) values (newid());

有可能剩下的4个字段,虽然字段名称与guid无关,但是字段类型定义为uniqueidentifier 导致insert的时候报错格式不对

收获园豆:20
lanedm | 老鸟四级 |园豆:2381 | 2023-09-13 08:46

昨天同样的操作,插入会报这个错,但是今天就可以了,昨天的表里面这个主键有外键关联会有影响吗

佩琪·NET | 园豆:40 (初学一级) | 2023-09-13 09:11

@佩琪·NET: 在 SQL Server 中,如果你创建一个表,并定义了一个主键和一个外键,那么在插入数据时,必须同时提供主键和外键的值。如果只插入主键字段而不插入外键字段,将会导致插入操作失败,并且会报错。

当执行插入操作时,SQL Server 会检查外键约束是否得到满足。如果外键字段的值为空或不存在于关联表中,将会触发错误。

如果你希望在插入数据时仅提供主键的值,而不关心外键的值,你可以考虑以下两种方法:

  1. 在表定义中,将外键字段设置为可空(NULL)。这样,在插入数据时,外键字段可以接受 NULL 值。例如:
CREATE TABLE YourTable (
    col1 UNIQUEIDENTIFIER PRIMARY KEY,
    col2 UNIQUEIDENTIFIER NULL,
    -- 其他列...
    FOREIGN KEY (col2) REFERENCES OtherTable(col2)
);

在这种情况下,插入数据时只提供主键值,外键字段将保持为 NULL。
2. 在插入数据之前,先为外键字段提供一个有效的值。这可以通过使用 INSERT INTO 语句的 DEFAULT 关键字来完成。例如:

INSERT INTO YourTable (col1, col2)
VALUES ('YourPrimaryKeyValue', DEFAULT);

这将使用数据库中的默认值来填充外键字段。

需要注意的是,如果外键字段具有非空约束(NOT NULL),则必须提供有效的外键值,否则会导致插入操作失败。

lanedm | 园豆:2381 (老鸟四级) | 2023-09-13 09:15

@lanedm: 可是刚刚我尝试了,重新创建表并使用INSERT INTO 插入,先插入的主键表数据,再插入的外键表数据,没有出现异常

佩琪·NET | 园豆:40 (初学一级) | 2023-09-13 09:20

@lanedm: 主要不懂的是和昨天一样的步骤,今天什么都没改,重新来过就没有问题。。。

佩琪·NET | 园豆:40 (初学一级) | 2023-09-13 09:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册