Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
dips255
Starting Member
17 Posts |
Posted - 2011-01-19 : 06:35:06
|
| I have a trigger (instead of insert) on the table users which does some validations and then insertsDECLARE @ColumnList varchar(1000)SELECT @ColumnList = COALESCE(@ColumnList + ', ', '') + COLUMN_NAMEFROM information_schema.columns WHERE table_name = 'Users' AND COLUMN_NAME<>'LOGINID' ORDER BY ORDINAL_POSITIONEXEC ('INSERT INTO dbo.USERS (' + @ColumnList + ') SELECT ' + @ColumnList + ' FROM inserted')I get this run time error on above lineMsg 208, Level 16, State 1, Line 1Invalid object name 'inserted'.when i use thisSET IDENTITY_INSERT DBO.USERS ON INSERT INTO USERS SELECT * FROM INSERTEDSET IDENTITY_INSERT DBO.USERS OFF it gives errorAn explicit value for the identity column in table 'USERS' can only be specified when a column list is used and IDENTITY_INSERT is ON.please help |
|
|
lionofdezert
Aged Yak Warrior
885 Posts |
Posted - 2011-01-19 : 07:24:57
|
| http://connectsql.blogspot.com/2010/12/sql-server-insert-explicit-value-for.html--------------------------http://connectsql.blogspot.com/ |
 |
|
|
dips255
Starting Member
17 Posts |
Posted - 2011-01-20 : 00:38:42
|
I tried with 'SELECT * INTO #INS FROM INSERTED'now i get this errorINSTEAD OF triggers do not support direct recursion. The trigger execution failed.alter TRIGGER UserValidate on USERS INSTEAD OF INSERTASbegindeclare @Login varchar(20),@pass varchar(12),@name varchar(75),@city varchar(30),@country varchar(50),@email varchar(75),@mobile varchar(15),@category char(1),@err bitSELECT * INTO #INS FROM INSERTEDset @err = 0select @LoginName = loginName from #insselect @pass = password from #insselect @name = name from #insselect @city = city from #insselect @country = country from #insselect @email = email from #insselect @mobile = mobile from #insselect @category = category from #insif (@LoginName = '' or @pass='' or @name='' or @category='' or @city='' or @country='' or (@email='' and @mobile=''))beginrollbackRAISERROR ('Required data missing', 16, 10)set @err = 1endif exists(select loginid from users where loginName=@loginName)beginrollbackRAISERROR ('Login Name already exists', 16, 10)set @err = 1endif @email<>''beginif exists(select loginid from users where email=@email )begin--print 'duplicate email'rollbackRAISERROR ('Email ID already exists', 16, 10)set @err = 1endendif @mobile<>''beginif exists(select loginid from users where mobile=@mobile )begin--print 'duplicate mobile'rollbackRAISERROR ('Mobile number already exists', 16, 10)set @err = 1endendif @err = 0beginprint 'commit'DECLARE @ColumnList varchar(2000)SELECT @ColumnList = COALESCE(@ColumnList + ', ', '') + COLUMN_NAMEFROM information_schema.columns WHERE table_name = 'Users' AND COLUMN_NAME<>'LOGINID' ORDER BY ORDINAL_POSITIONEXEC ('SET IDENTITY_INSERT DBO.USERS ON; INSERT INTO dbo.USERS (' + @ColumnList + ') SELECT ' + @ColumnList + ' FROM #ins; SET IDENTITY_INSERT DBO.USERS OFF')endendquote: Originally posted by lionofdezert http://connectsql.blogspot.com/2010/12/sql-server-insert-explicit-value-for.html--------------------------http://connectsql.blogspot.com/
|
 |
|
|
|
|
|
|
|