标签: sql

当IDENTITY_INSERT设置为OFF时,无法在表'ClientDetails'中为identity列插入显式值

每当我尝试通过表单将数据提交到此数据库时,我都会抛出此异常: -

  • 例外

    当IDENTITY_INSERT设置为OFF时,无法在表'ClientDetails'中为identity列插入显式值.

但是,表单没有字段,因此数据可以进入标识列(PK),因此我不知道为什么会出现这种情况.

目前我正在使用标准的asp.net mvc提交按钮,但我最终将它链接到一个jquery对话框按钮

ClientNo列是异常所指的列,具有以下属性

  • 名称 - ClientNo
  • type - int
  • NULLS - 没有
  • 身份规范 - 是的
  • 是身份 - 是的
  • 增量 - 1
  • 种子 - 1

ClientNo有900以后的数据等

当客户端表单没有在表单中输入数据时,也会抛出此异常

它抛出在DataCOntext.SubmitChanges()方法上

[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create1(ClientDetail client)
        {
            if(ModelState.IsValid)
            { 
            client = new ClientDetail();



                UpdateModel(client);
                //Debug Code
                System.Diagnostics.Debug.WriteLine("AddNewClient Create1");
                repo.AddNewClient(client);
                //Debug Code
                System.Diagnostics.Debug.WriteLine("Save Create1");


                // System.Data.SqlClient.SqlException thrown at this line  
                repo.Save();

                //Debug Code - never reached
                System.Diagnostics.Debug.WriteLine("Saved Changes");


              //  return RedirectToAction("Details", new { id = client.ClientNo });




            }
            return View(client); …
Run Code Online (Sandbox Code Playgroud)

c# sql asp.net linq-to-sql asp.net-mvc-2

11
推荐指数
1
解决办法
2万
查看次数

如何创建历史事实表?

我的数据仓库中有一些实体:

  1. - 具有属性personId,dateFrom,dateTo和其他可以更改的人,例如姓氏,出生日期等 - 慢慢变化的维度

  2. 文档 - documentId,数字,类型

  3. 地址 - addressId,city,street,house,flat

(人与文件)之间的关系是一对多,(人与地址)是多对多的.

我的目标是创建历史事实表,可以回答以下问题:

  1. 哪些人在规定的日期定义了哪些文件?

2,居民的定义地址在规定的时间间隔内有什么历史?

这不仅适用于DW的设计,但我认为这是DW设计中最难的事情.

例如,布朗小姐的personId = 1,自01/01/2005至02/02/2010以来,documentId = 1且documentId = 2的文档已经存在于addressId = 1的地址,然后移至addressId = 2从2010年2月2日开始生活到当前日期(NULL?).但她自2006年5月4日起将姓氏改为格林夫人,自2007年7月6日起,她的第一份文件记录为documentId = 1至documentId = 3.带有personId = 2的Bl​​ack先生,自2010年2月2日至今日,documentId = 4一直存在于addressId = 1.

对于问题2的查询的预期结果,其中addressId = 1,时间间隔是从01/01/2000到现在,必须如下:

行:

last_name="Brown", documentId=1, dateFrom=01/01/2005, dateTo=04/04/2006

last_name="Brown", documentId=2, dateFrom=01/01/2005, dateTo=04/04/2006

last_name="Green", documentId=1, dateFrom=04/05/2006, dateTo=06/06/2007

last_name="Green", documentId=2, dateFrom=04/05/2006, dateTo=06/06/2007

last_name="Green", documentId=2, dateFrom=06/07/2007, dateTo=02/01/2010

last_name="Green", documentId=3, dateFrom=06/07/2007, dateTo=02/01/2010

last_name="Black", documentId=4, dateFrom=02/03/2010, dateTo=NULL
Run Code Online (Sandbox Code Playgroud)

我有一个想法,用复合键(personId,documentId,addressId,dateFrom)创建事实表,但我不知道如何加载此表,然后使用此结构获得预期的结果.

我会很高兴得到任何帮助!

sql data-warehouse fact-table datahistory

11
推荐指数
1
解决办法
3817
查看次数

SQL/Sybase:SELECT ... GROUP BY ...没有?

col1   col2
A      bear
A      dog
A      cat
B      bear
B      dog
B      cat
C      dog
C      cat
D      bear
D      dog
D      cat
E      bear
E      dog
E      cat
F      dog
F      cat
Run Code Online (Sandbox Code Playgroud)

如果我想选择至少有一行的所有col1值col2 = 'bear',我可以这样做:

SELECT col1 
FROM mytable 
WHERE col1 IN ('A','B','C') 
GROUP BY col1 
HAVING col2 = 'bear'
Run Code Online (Sandbox Code Playgroud)

这将返回A和B.

但我想只选择col1中没有行的值 col2 = 'bear'

我在想NOT HAVING,但这似乎不起作用.

有任何想法吗?谢谢!

sql sybase group-by

11
推荐指数
2
解决办法
2万
查看次数

如何在SQL Server 2000中生成一个填充日期的临时表?

我需要创建一个包含日期范围的临时表,以及一些包含占位符值(0)以供将来使用的列.我需要的日期是$ startDate和$ endDate之间每个月的第一天,这些变量可能相隔数年.

我原来的sql语句看起来像这样:

select dbo.FirstOfMonth(InsertDate) as Month, 0 as Trials, 0 as Sales
into #dates
from customer
group by dbo.FirstOfMonth(InsertDate)
Run Code Online (Sandbox Code Playgroud)

"FirstOfMonth"是一个用户定义的函数,它完全按照它所说的做,返回当月的第一天所提供的日期,时间恰好是午夜.

这几乎完全是我所需要的,直到我发现我的日期偶尔会出现间隙,我有几个月没有记录插入日期.由于我的结果仍然缺少几个月,我需要一个不同的方法.

我已经向存储过程添加了以下声明,预计它们需要我需要的日期范围...

declare $startDate set $startDate = select min(InsertDate) from customer
declare $endDate set $endDate = select max(InsertDate) from customer
Run Code Online (Sandbox Code Playgroud)

......但我不知道该怎么做.

我知道这个问题这个问题类似,但是坦率地说,这个答案已经过去了(我不经常使用SQL,当我这样做时,它往往是在旧版本的SQL Server上)并且有一些小问题差点让我失望.

sql t-sql stored-procedures sql-server-2000

11
推荐指数
3
解决办法
7万
查看次数

如何获取Access(Jet)数据库中的表列表?

我需要查看我的c#程序使用的Access数据库中是否存在表.知道有其他数据库的SQL命令将返回表列表.Access/Jet数据库是否有这样的命令?

.net c# sql ms-access jet

11
推荐指数
2
解决办法
2万
查看次数

涉及多态关联的复杂时间序列统计聚合

好.请耐心等待,因为我需要提供大量的背景细节才能对我的问题征求合理的答案.

我有一个网站,允许您每日选股.它的工作方式是,提示您在当天面临关闭的公司之间进行选择.例如,GE与IBM.您可以选择两种类型:性能(哪种股票表现更好?)和总成交量(合并后的股票交易量是否高于或低于X?).你每天获得100美元的虚拟美元来进行选择.

最终,我们的目标是跟踪哪个用户在以下时间段内以不同类别(下文解释)的每次选择赚取最多钱:5天,15天,30天,90天,180天,1年,全部 - 时间.计算每次选择的金额非常简单.这是总赚钱(或丢失)/选秀数量.

现在,用户选择的每个公司都属于分类层次结构.通常,分类层次结构如下所示:

分部 - >主要集团 - >产业集团 - >分类 - >公司

这里有些例子:

  • 采矿 - >金属采矿 - >铁矿石 - >棕色矿石采矿 - >公司A.
  • 采矿 - >金属采矿 - >铁矿石 - >棕色矿石采矿 - >公司B.
  • 采矿 - >金属采矿 - >铁矿石 - >褐铁矿矿业 - >公司C.
  • 采矿 - >金属采矿 - >铁矿石 - >褐铁矿采矿 - >公司D.
  • 制造业 - >烟草产品 - >雪茄 - > Stogies - >公司E.
  • 制造业 - >烟草产品 - >雪茄 - > Stogies - >公司F.
  • 制造业 - >烟草产品 - >雪茄 - >小雪茄 - …

mysql sql ruby-on-rails aggregation polymorphic-associations

11
推荐指数
1
解决办法
598
查看次数

如何附加到SQL中的现有记录?

有人能告诉我如何在SQL中追加?我整天都在试图解决这个问题.这是我到目前为止:

update table1 
set field1 = field1 + '123456' 
where field2 = '12'
Run Code Online (Sandbox Code Playgroud)

对不起,我忘了提到我在声明中更新了多个字段.

sql t-sql database sql-server-2008

11
推荐指数
2
解决办法
5万
查看次数

Oracle - 将多个计数作为一个查询返回

我有几个问题,详情如下.我希望能够运行一个返回两个计数的SQL查询,这可能吗?

1.

select nvl(count(rowid), 0) from tablename where OPP = 'FOO' and date = 'BAZ';
Run Code Online (Sandbox Code Playgroud)

2.

select nvl(count(rowid), 0) from tablename where OPP = 'BAR' and date = 'BAZ';
Run Code Online (Sandbox Code Playgroud)

到目前为止,我只在搜索中找到了MSSQL特定的解决方案.

sql oracle

11
推荐指数
2
解决办法
2万
查看次数

SQL Server:如何将随机整数插入表中?

我有这样的测试表

CREATE TABLE #temp (
    rid INT IDENTITY (1, 1) NOT NULL,
    val INT NULL,
    CONSTRAINT pk_temp_rid PRIMARY KEY (rid)
);
Run Code Online (Sandbox Code Playgroud)

SQL Server中有哪些不同的方法可以将随机整数插入此表中(例如,对于1000行).循环,交叉连接还是什么?

我尝试了这个,但结果不正确

DECLARE @val AS INT = 1;

WHILE @val <= 1000
    BEGIN
        INSERT #temp (val)
        SELECT RAND(@val);
        SET @val = @val + 1;
    END

SELECT *
FROM   #temp;
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005 sql-server-2008

11
推荐指数
3
解决办法
3万
查看次数

从存储过程插入临时表,该存储过程返回多个结果集

考虑以下sql

一个名为myProc的存储过程,它返回两个结果集.结果集1返回column1,column2.结果集2返回第3列第4列第5列.

以下sql将失败,因为临时表仅定义了2个int列.

Create Table #temp1(
Column1 int,
Column2 int)

insert into #temp1 exec myProc
Run Code Online (Sandbox Code Playgroud)

我的问题是是否可以将第一个结果集插入#temp1?

sql t-sql stored-procedures sql-server-2005

11
推荐指数
1
解决办法
2万
查看次数